Java 中的 HTML 到 PDF

查克尼思·賓
查克尼思·賓
2022年12月28日
已更新 2024年12月10日
分享:
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 程式語言。 本教程涵蓋了該庫在 Java 應用程式中用於轉換 HTML 內容(文件、標記等)的使用。 有關在 .NET 應用程式中將 HTML 轉換為 PDF 的教學可在HTML to PDF .NET 教學中找到。


概述


入門

立即在您的專案中使用IronPDF,並享受免費試用。

第一步:
green arrow pointer


1. 安裝 IronPDF PDF 庫適用於 Java

在 Java 專案中整合IronPDF函式庫有兩種方法:

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

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

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

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

要在使用 Maven 的 Java 項目中安裝 IronPDF,請將以下元件添加到 Java 項目的 pom.xml 檔案的依賴性部分。

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

第一個工件參考了IronPDF 庫的最新版本。 第二個工件引用了一個[SL4J](https://www.slf4j.org/" target="_blank" rel="nofollow noopener noreferrer) 的實作。 此依賴項是必需的,以便啟用 IronPDF 的渲染引擎在執行期間生成日誌訊息。 軟體工程師可以將此依賴項替換為其他日誌提供者(例如[Logback](https://logback.qos.ch/" target="_blank" rel="nofollow noopener noreferrer)和[Log4J](https://logging.apache.org/log4j/2.x/" target="_blank" rel="nofollow noreferrer noopener)); 或者如果他們不需要或不想要記錄功能,可以完全省略。

在 Java 專案的根目錄中的終端機執行 mvn install 指令,以下載前面提到的函式庫。

選項 2:手動安裝 IronPDF JAR

不希望使用 Maven 或任何其他依賴管理系統的開發者將需要 下載 IronPDF 庫 JAR 文件 (以及可選的[SL4J](https://mvnrepository.com/artifact/org.slf4j/slf4j-simple" target="_blank" rel="nofollow noopener noreferrer)實作)並手動將其添加到專案的類別路徑中。

直接從IronPDF JAR 下載(或從 Maven Repository)下載 IronPDF JAR 檔案。


使用指南和程式範例

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文件將會有一個平鋪背景的浮水印(如下面的圖片所示)。

Html To Pdf 23 related to 2.2. 設定授權金鑰(可選)

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

要使用IronPDF生成沒有浮水印的PDF,必須使用有效的授權密鑰。 下面的代碼行配置了帶有許可證密鑰的庫。

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

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

從 IronPDF 許可頁面購買許可證金鑰,或聯繫我們以 獲取免費試用許可證金鑰

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 To Pdf 5 related to 2.4. 從 HTML 字串建立 PDF

使用PdfDocument.renderHtmlAsPdf將HTML標記轉換為PDF文件。此方法可以使用所有符合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

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

Html To Pdf 24 related to 2.4. 從 HTML 字串建立 PDF

PdfDocument.renderHtmlAsPdf 可以渲染各種豐富的媒體元素。如果它能在 Chrome 中顯示,那麼 renderHtmlAsPdf 就能渲染它!

renderHtmlAsPdf的第二個(可選)參數允許開發人員指定從中引用網頁資源的基準路徑。 此路徑可以是本地文件系統上的目錄,甚至是URL路徑。

了解更多有關renderHtmlAsPdf方法的資訊,請參閱此使用HTML創建PDF的程式碼範例,或在[PdfDocument 類別的 API 參考頁面](/java/object-reference/api/com/ironsoftware/ironpdf/PdfDocument.html#renderHtmlAsPdf(java.lang.String)中閱讀相關內容。

2.5. 從網址建立 PDF

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

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

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

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

Html To Pdf 7 related to 2.5. 從網址建立 PDF

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

了解更多關於將網頁轉換成 PDF 內容的信息,請參閱這個將 URL 轉換為 PDF 的程式碼範例

2.6. 從 HTML 檔案建立 PDF

IronPDF 也可以將存儲在本地文件系統上的 HTML 文檔直接轉換成其等效的 PDF 格式。

下一個代碼範例使用[此發票作為真實世界的示範](https://codepen.io/tjoen/pen/wvgvLX" target="_blank" rel="nofollow noopener noreferrer),展示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 to PDF 轉換器進行 Java 開發,請參考我們程式碼範例部分中精選的程式碼範例。

  1. 閱讀此程式碼範例以獲取 PDF 生成設置以了解如何在轉換過程中自訂 PDF 文件的外觀。

  2. 生成 PDF 文件,具備自訂頁首和頁尾邊距大小頁面尺寸浮水印等多種功能。

  3. 從文件中提取PDF內容(從PDF中提取文字從PDF中提取圖片),利用PDF壓縮優化檔案大小,以及利用IronPrint功能以程式方式列印PDF

    研究IronPDF Java API 參考頁面中的PdfDocument類別,以便更好地控制將 HTML 轉換為 PDF 的過程。

觀看 HTML 轉 PDF 教學影片


快速指南

Cps Intellij related to 快速指南

下載此教程作為 Java 原始碼

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

下載

在 GitHub 上探索此教學

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

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

Java HTML 轉 PDF
Github Icon related to 快速指南
Documentation related to 快速指南

查看 API 參考文件

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

查看 API 參考文件
查克尼思·賓
軟體工程師
Chaknith 致力於 IronXL 和 IronBarcode。他在 C# 和 .NET 方面擁有豐富的專業知識,協助改進軟體並支持客戶。他從用戶互動中獲得的洞察力有助於提高產品、文檔和整體體驗。