HTML轉PDF在Java中

This article was translated from English: Does it need improvement?
Translated
View the article in English

本教程指導Java開發人員如何使用IronPDF庫將HTML內容轉換為像素完美的PDF (可攜式文件格式) 文件.

IronPDF 是一個功能齊全的 PDF 轉換器和 PDF 處理庫。IronPDF 可用於 .NETJava 程式語言。本教程涵蓋了使用該庫將HTML內容轉換 (文件,標記等) 在 Java 應用程序中。在 .NET 應用程序中轉換 HTML 為 PDF 的教學可用 這裡.


概述


入門

1. 安裝 IronPDF PDF Library for Java

Java Maven 圖書館用於 PDF

安裝與 Maven

<dependency>
   <groupId>com.ironsoftware</groupId>
   <artifactId>ironpdf</artifactId>
   <version>2024.9.1</version>
</dependency>
Java PDF JAR

下載 JAR

  下載 JAR

手動安裝到您的項目中

有兩種方式將 IronPDF Java 項目中的庫:

  1. 在使用 Maven 配置的 Java 項目中將 IronPDF 添加為依賴項

  2. 下載 IronPDF JAR 文件並手動將其添加到項目類路徑中

以下部分將簡要介紹兩種安裝方法。

選項1:安裝 IronPDF 作為 Maven 依賴項

要在使用 Maven 的 Java 專案中安裝 IronPDF,請將以下 artifact 添加到 Java 專案的 pom.xml 文件的依賴部分。

<dependency>
   <groupId>com.ironsoftware</groupId>
   <artifactId>com.ironsoftware</artifactId>
   <version>2024.9.1</version>
</dependency>

第一個工件引用了 最新版本 IronPDF庫的。第二個工件引用了一個 SL4J 實現。這個依賴項需要啟用IronPDF的渲染引擎在執行期間生成日誌消息。軟體工程師可以用其他日誌提供者替換這個依賴項。 (例如 日志回傳Log4J);或者如果他們不需要或不希望記錄,則完全忽略它。

在Java項目根目錄的終端中運行 mvn install 命令以下載前面提到的庫。

選項2:手動安裝 IronPDF JAR

不喜歡使用 Maven 或任何其他依賴管理系統的開發者需要 下載 IronPDF 庫的 JAR 文件 (和可選的 SL4J 實施) 並手動將其添加到他們專案的類路徑中。

從以下位置直接下載IronPDF JAR檔案 這裡 (或從 Maven 倉庫).


使用指南和程式範例

2. 將HTML轉換為PDF

本節展示了IronPDF的旗艦HTML轉PDF渲染功能。

PdfDocument類是IronPDF所有PDF文檔渲染和操作功能的入口點。該類包含一組強大的方法,用於支持以下三種用例的HTML轉PDF文檔:從HTML字符串/標記轉換、從HTML文件轉換以及從URL轉換。本節將簡要介紹這些用例中的每一個,並提供鏈接以獲取更多信息。

2.1 匯入 IronPDF 套件

IronPDF 的所有轉換和處理組件都包含在 com.ironsoftware.ironpdf 套件中。

在 Java 原始檔案的頂部包含以下匯入語句 (IronPDF 的使用範圍) 使這些元件能夠被應用程式的源代碼訪問。

// Import statement for IronPDF for Java
import com.ironsoftware.ironpdf.*;
JAVA

2.2. 設置授權金鑰 (可選的)

IronPDF for Java 可以免費使用。然而,對於免費使用者,它會在 PDF 文件上添加帶有平鋪背景的浮水印。 (如下圖所示).

前往 ironpdf.com/java/licensing/ 獲取授權金鑰,無水印轉換和操作 PDF 檔案。

若要使用 IronPDF 生成無浮水印的 PDF,該程式庫必須使用有效的授權碼。以下的程式碼行將程式庫配置為使用授權碼。

// Apply your license key
License.setLicenseKey("YOUR-LICENSE-KEY");
JAVA

許可證密鑰應該在生成PDF文件或自定義文件內容之前設置。我們建議您在所有其他代碼行之前調用setLicenseKey方法。

購買許可證密鑰 從我們的授權頁面,或聯繫我們以 獲取試用授權金鑰.

2.3 設定日誌文件位置 (可選的)

默認情況下 (假設已安裝了 SLF4J 提供者)IronPDF 會產生記錄訊息到名為 IronPdfEngine.log 的文字檔,該檔案位於 Java 應用程式的根目錄。

要指定記錄檔的不同名稱和位置,請使用 Settings.setLogPath 方法:

// Set a log path
Settings.setLogPath(Paths.get("IronPdfEngine.log"));
JAVA

請注意Settings.setLogPath 必須在使用任何 PDF 轉換和操作方法之前調用。

2.4. 從 HTML 字串創建 PDF 檔案

PdfDocument.renderHtmlAsPdf 會將一個 HTML 內容字串轉換成 PDF 文件。

以下的代碼範例使用一個標題元素來生成一個新檔案。

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
pdf.saveAs("htmlstring_to_pdf.pdf");
JAVA

將 HTML 標記轉換為 PDF 文件使用 PdfDocument.renderHtmlAsPdf此方法可以使用所有符合W3C標準的有效HTML和CSS標記生成PDF文件。

renderHtmlAsPdf 處理所有 HTML、CSS 和 JavaScript 內容的方式與現代、符合標準的瀏覽器相同。這有助於軟體工程師創建看起來與網頁瀏覽器中顯示完全相同的 PDF 文檔。

renderHtmlAsPdf 方法可以從計算機或網路驅動器上的資料夾中獲取圖像、樣式表和腳本。下面的例子從引用 assets 資料夾中的 CSS 文件和圖像的 HTML 生成了 PDF 文檔:

String html = "<html><head><title>Hello world!</title><link rel='stylesheet' href='assets/style.css'></head><body><h1>Hello from IronPDF!</h1><a href='https://ironpdf.com/java/'><img src='assets/logo.png' /></a></body></html>";
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);
pdf.saveAs("output.pdf");
JAVA

上述代碼的結果顯示在下圖中。

PdfDocument.將HTML渲染為PDF 能渲染各種豐富的媒體元素。如果可以在Chrome中顯示,那麼 將HTML渲染為PDF 會呈現它!

第二 (可選的) renderHtmlAsPdf 的參數允許開發人員指定一個基底路徑來引用網頁資源。這個路徑可以是本地文件系統的目錄,也可以是 URL 路徑。

了解更多有關 renderHtmlAsPdf 方法的資訊,請參閱 這個程式碼範例,或閱讀有關內容 API 參考文獻 頁面。

2.5. 從 URL 創建 PDF

開發人員可以使用 IronPDF 的 PdfDocument.renderUrlAsPdf 方法將線上網頁轉換為 PDF 文件。

以下示例將維基百科文章渲染為 PDF 內容。

PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.saveAs("url_to_pdf.pdf");
JAVA

下方顯示所生成的 PDF 文件格式。

IronPDF Java 庫可以轉換託管在線的網頁中的 HTML 內容。使用 PdfDocument.renderUrlAsPdf 實現的方法。

了解有關將網頁轉換成PDF內容的更多資訊 程式碼範例.

2.6. 創建來自HTML檔案的PDF

IronPDF也可以直接將存儲在本地文件系統上的HTML文件渲染成相應的PDF格式。

下面的代碼示例使用 這張發票 作為 IronPDF 能夠轉換 HTML 檔案的實際示範。

為方便起見,這裡重現了發票的 HTML 標記:


<html>
<head>
    <meta charset="utf-8">
    <title>Invoice</title>
    <link rel="stylesheet" href="style.css">
    <link rel="license" href="https://www.opensource.org/licenses/mit-license/">
    <script src="script.js"></script>
</head>
<body>
<header>
    <h1>Invoice</h1>
    <address contenteditable>
        <p>Jonathan Neal</p>
        <p>101 E. Chapman Ave<br>Orange, CA 92866</p>
        <p>(800) 555-1234</p>
    </address>
    <span><img alt="" src="http://www.jonathantneal.com/examples/invoice/logo.png"><input type="file" accept="image/*"></span>
</header>
<article>
    <h1>Recipient</h1>
    <address contenteditable>
        <p>Some Company<br>c/o Some Guy</p>
    </address>
    <table class="meta">
        <tr>
            <th><span contenteditable>Invoice #</span></th>
            <td><span contenteditable>101138</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Date</span></th>
            <td><span contenteditable>January 1, 2012</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Amount Due</span></th>
            <td><span id="prefix" contenteditable>$</span><span>600.00</span></td>
        </tr>
    </table>
    <table class="inventory">
        <thead>
        <tr>
            <th><span contenteditable>Item</span></th>
            <th><span contenteditable>Description</span></th>
            <th><span contenteditable>Rate</span></th>
            <th><span contenteditable>Quantity</span></th>
            <th><span contenteditable>Price</span></th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td><a class="cut">-</a><span contenteditable>Front End Consultation</span></td>
            <td><span contenteditable>Experience Review</span></td>
            <td><span data-prefix>$</span><span contenteditable>150.00</span></td>
            <td><span contenteditable>4</span></td>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
        </tbody>
    </table>
    <a class="add">+</a>
    <table class="balance">
        <tr>
            <th><span contenteditable>Total</span></th>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Amount Paid</span></th>
            <td><span data-prefix>$</span><span contenteditable>0.00</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Balance Due</span></th>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
    </table>
</article>
<aside>
    <h1><span contenteditable>Additional Notes</span></h1>
    <div contenteditable>
        <p>A finance charge of 1.5% will be made on unpaid balances after 30 days.</p>
    </div>
</aside>
</body>
</html>

<html>
<head>
    <meta charset="utf-8">
    <title>Invoice</title>
    <link rel="stylesheet" href="style.css">
    <link rel="license" href="https://www.opensource.org/licenses/mit-license/">
    <script src="script.js"></script>
</head>
<body>
<header>
    <h1>Invoice</h1>
    <address contenteditable>
        <p>Jonathan Neal</p>
        <p>101 E. Chapman Ave<br>Orange, CA 92866</p>
        <p>(800) 555-1234</p>
    </address>
    <span><img alt="" src="http://www.jonathantneal.com/examples/invoice/logo.png"><input type="file" accept="image/*"></span>
</header>
<article>
    <h1>Recipient</h1>
    <address contenteditable>
        <p>Some Company<br>c/o Some Guy</p>
    </address>
    <table class="meta">
        <tr>
            <th><span contenteditable>Invoice #</span></th>
            <td><span contenteditable>101138</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Date</span></th>
            <td><span contenteditable>January 1, 2012</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Amount Due</span></th>
            <td><span id="prefix" contenteditable>$</span><span>600.00</span></td>
        </tr>
    </table>
    <table class="inventory">
        <thead>
        <tr>
            <th><span contenteditable>Item</span></th>
            <th><span contenteditable>Description</span></th>
            <th><span contenteditable>Rate</span></th>
            <th><span contenteditable>Quantity</span></th>
            <th><span contenteditable>Price</span></th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td><a class="cut">-</a><span contenteditable>Front End Consultation</span></td>
            <td><span contenteditable>Experience Review</span></td>
            <td><span data-prefix>$</span><span contenteditable>150.00</span></td>
            <td><span contenteditable>4</span></td>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
        </tbody>
    </table>
    <a class="add">+</a>
    <table class="balance">
        <tr>
            <th><span contenteditable>Total</span></th>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Amount Paid</span></th>
            <td><span data-prefix>$</span><span contenteditable>0.00</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Balance Due</span></th>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
    </table>
</article>
<aside>
    <h1><span contenteditable>Additional Notes</span></h1>
    <div contenteditable>
        <p>A finance charge of 1.5% will be made on unpaid balances after 30 days.</p>
    </div>
</aside>
</body>
</html>
HTML

假設 HTML 文件已經與其 CSS 文件和 JavaScript 文件一起保存到名為 invoices 的文件夾中。我們可以使用 IronPDF 來轉換 HTML 文件,如下所示:

PdfDocument pdf = PdfDocument.renderHtmlFileAsPdf("C:/invoices/TestInvoice1.html");
pdf.saveAs("htmlfile_to_pdf.pdf");
JAVA

與將 HTML 字串轉換為 PDF 的範例一樣,IronPDF 能夠正確解析 HTML 文件中的任何相對 URL,以找到它們在檔案系統中的正確路徑。因此,此範例生成的 PDF 檔案能夠完美捕捉任何引用的樣式表和腳本對網頁的視覺影響。

3. 進一步閱讀

我們只是簡單介紹了 IronPDF 的 HTML 到 PDF 渲染功能。

請進一步瞭解如何使用 HTML 到 PDF 轉換器進行 Java 開發,參考我們精心挑選的代碼範例,詳情請參閱我們的 程式碼範例 區段。

  1. 讀取 這個程式碼範例 了解在轉換過程中如何自訂PDF文件的外觀。

  2. 生成PDF文件,並附帶 自訂頁首和頁尾, 邊距大小, 頁面尺寸, 浮水印,以及更多內容。

  3. 提取 PDF 內容 (文字圖像) 從文件中, 優化檔案大小,和 以程式化方式列印 PDFs

學習 IronPDF Java API 參考文件PdfDocument 類別的頁面上,可以對渲染的 HTML 到 PDF 進行更大的控制。

觀看 HTML 轉 PDF 教學影片


快速指南

下載此教程作為 Java 原始碼

此教程的完整HTML到PDF Java源碼可作為壓縮的IntelliJ項目免費下載。

下載

在 GitHub 上探索此教學

此項目的原始碼可在 GitHub 上獲得。

使用此代碼可以在幾分鐘內輕鬆啟動。該項目保存為IntelliJ IDEA項目,但可以導入到其他常見的Java IDE中。

Java HTML 轉換成 PDF

查看 API 參考文件

探索 IronPDF 的 API 參考,概述 IronPDF 所有功能、命名空間、類別、方法欄位和枚舉的詳細資訊。

查看 API 參考文件