Java 中的 HTML 到 PDF
本教程指導 Java 開發人員如何使用 IronPDF 庫將 HTML 內容轉換為像素完美的 PDF(可攜式文檔格式)文件。
*IronPDF 是一款功能齊全的 PDF 轉換器和 PDF 處理庫。 IronPDF 適用於 .NET 和 Java 程式語言。 本教程涵蓋了該庫在 Java 應用程式中用於轉換 HTML 內容(文件、標記等)的使用。 有關在 .NET 應用程式中將 HTML 轉換為 PDF 的教學可在HTML to PDF .NET 教學中找到。
概述
如何在 Java 中將 HTML 轉換為 PDF

- 安裝 Java 函式庫以將 HTML 轉換為 PDF
- 使用
renderHtmlAsPdf
方法將HTML字串轉換為PDF文件 - 從網站 URL 生成 PDF 文件(Java)
- 使用
renderHtmlFileAsPdf
方法將HTML檔案轉換為PDF檔案 - 將生成的 PDF 另存為新文件
入門
立即在您的專案中使用IronPDF,並享受免費試用。
1. 安裝 IronPDF PDF 庫適用於 Java
在 Java 專案中整合IronPDF函式庫有兩種方法:
-
在 Maven 配置的 Java 項目中添加 IronPDF 作為依賴
-
下載 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.*;
2.2. 設定授權金鑰(可選)
IronPDF for Java 是免費使用的。 然而,對於免費用戶,PDF文件將會有一個平鋪背景的浮水印(如下面的圖片所示)。
要使用IronPDF生成沒有浮水印的PDF,必須使用有效的授權密鑰。 下面的代碼行配置了帶有許可證密鑰的庫。
// Apply your license key
License.setLicenseKey("YOUR-LICENSE-KEY");
許可證密鑰應在生成PDF文件或自訂文件內容之前設置。 我們建議您在所有其他程式碼行之前調用setLicenseKey
方法。
從 IronPDF 許可頁面購買許可證金鑰,或聯繫我們以 獲取免費試用許可證金鑰。
2.3 設定日誌檔案位置(可選)
預設情況下(並假設安裝了 SLF4J 提供者),IronPDF 會生成日誌訊息到一個名為 IronPdfEngine.log 的文本檔案,該檔案位於 Java 應用程式的根目錄中。
若要指定日誌文件的不同名稱和位置,請使用Settings.setLogPath
方法:
// Set a log path
Settings.setLogPath(Paths.get("IronPdfEngine.log"));
請注意: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");
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");
上述代碼的結果顯示在下圖中。
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");
下方顯示所生成的 PDF 文件格式。
了解更多關於將網頁轉換成 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 文件已經與其 CSS 文件和 JavaScript 文件一起保存到名為 invoices 的文件夾中。我們可以使用 IronPDF 來轉換 HTML 文件,如下所示:
PdfDocument pdf = PdfDocument.renderHtmlFileAsPdf("C:/invoices/TestInvoice1.html");
pdf.saveAs("htmlfile_to_pdf.pdf");
如同HTML字符串到PDF轉換示例,IronPDF正確解析HTML文檔中的任何相對URL,使其指向文件系統中的正確路徑。 因此,這個範例產生的PDF檔案能夠完美捕捉任何引用的樣式表和腳本在網頁上通常具有的視覺影響。
3. 進一步閱讀
我們只是略微觸及了IronPDF將HTML轉換為PDF的渲染能力。
進一步了解如何使用 HTML to PDF 轉換器進行 Java 開發,請參考我們程式碼範例部分中精選的程式碼範例。
-
閱讀此程式碼範例以獲取 PDF 生成設置以了解如何在轉換過程中自訂 PDF 文件的外觀。
-
從文件中提取PDF內容(從PDF中提取文字和從PDF中提取圖片),利用PDF壓縮優化檔案大小,以及利用IronPrint功能以程式方式列印PDF。
研究IronPDF Java API 參考頁面中的
PdfDocument
類別,以便更好地控制將 HTML 轉換為 PDF 的過程。
觀看 HTML 轉 PDF 教學影片
快速指南
在 GitHub 上探索此教學
此項目的原始碼可在 GitHub 上獲得。
使用此代碼可以在幾分鐘內輕鬆啟動。該項目保存為IntelliJ IDEA項目,但可以導入到其他常見的Java IDE中。
Java HTML 轉 PDF