在Java中將HTML轉換為PDF
IronPDF for Java 使用現代瀏覽器中的渲染引擎將 HTML 內容轉換為像素完美的 PDF 文件。 Java 應用程式可以從 HTML 字串、本地 HTML 文件或線上網頁生成 PDF,無需任何額外的渲染軟體或圖形介面環境。
本教程涵蓋了 IronPDF for Java 中所有的 HTML 到 PDF 轉換方法,以及安裝、授權和配置選項。 已經使用 IronPDF for .NET 的開發者會對 Java API 感到熟悉; 等價的 .NET 教程可在HTML to PDF for .NET Tutorial中找到。
快速入門:從 HTML 生成 PDF
以下範例從 HTML 字串建立一頁 PDF 並將其保存到磁碟。 安裝程式庫(步驟1)後,這是全部所需的程式碼:
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/quickstart-html-string.java
import com.ironsoftware.ironpdf.*;
// Apply your license key before any rendering call
License.setLicenseKey("YOUR-LICENSE-KEY");
// Render an HTML string to a PDF file
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF!</h1><p>Generated in Java.</p>");
pdf.saveAs("output.pdf");
今天就使用IronPDF開始專案,免費試用。
目錄
- 如何在 Java 專案中安裝 IronPDF?
- 如何將 HTML 字串轉換為 Java 中的 PDF?
- 如何在 HTML 字串中載入本地資產?
- 如何將 URL 轉換為 Java 中的 PDF?
- 如何將 HTML 文件轉換為 Java 中的 PDF?
- 如何自定義 PDF 輸出設置?
- 如何為 PDF 新增頁眉和頁腳?
- 如何設置自定義邊距和頁面大小?
- 如何為 PDF 新增水印?
- 如何從 Java 中的 PDF 提取文字?
- 如何從 Java 中的 PDF 提取圖像?
- 如何壓縮 PDF 文件?
- 如何以編程方式列印 PDF?
- 下一步
如何在 Java 專案中安裝 IronPDF?
IronPDF for Java 可在 Maven 中央儲存庫中獲得。 推薦的安裝方法是使用 Maven,儘管手動安裝 JAR 也支持不使用構建系統的專案。
以 Maven 依賴方式安裝
將以下 artifacts 新增到專案的 dependencies 區段的 pom.xml 文件中:
//:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/maven-dependency.xml
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2024.9.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.5</version>
</dependency>
//:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/maven-dependency.xml
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2024.9.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.5</version>
</dependency>
第一個 artifact 用於拉取 IronPDF。 第二個是 SLF4J 日誌實現。 IronPDF 使用 SLF4J 來發出渲染過程中的診斷消息; 您可以用 Logback 或 Log4j 2 替代,或完全省略日誌記錄。
在專案根目錄執行 mvn install 以下載依賴項。 在指定版本號前,檢查IronPDF 的最新版本,因為更改日誌列出了所有當前和過去的版本。
手動安裝 JAR
不使用 Maven 的開發人員可以從 Maven Central 直接下載 IronPDF fat JAR,並將之新增到專案類別路徑。 fat JAR 包含了所有傳遞依賴項。
導入 IronPDF 封裝
所有的 PDF 渲染和操作類都在 com.ironsoftware.ironpdf 包中。 將此導入語句新增到任何使用 IronPDF 的 Java 源文件中:
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/import-package.java
import com.ironsoftware.ironpdf.*;
設置授權金鑰
如果沒有授權金鑰,IronPDF 將在每頁上使用平鋪水印來渲染 PDF。 為了去除水印,在调用任何渲染方法之前,將有效的授權金鑰傳遞給 License.setLicenseKey:
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/set-license-key.java
import com.ironsoftware.ironpdf.*;
// Set the license key before any rendering call
License.setLicenseKey("YOUR-LICENSE-KEY");
將此调用放置於應用程式啓動時,在任何 PDF 生成邏輯運行之前。 開始免費試用以獲取試用金鑰,或查看授權選項以供生產使用。
配置日誌文件路徑
IronPDF 在應用程式的工作目錄中寫入名為 IronPdfEngine.log 的日誌文件,用於渲染診斷。 調用 Settings.setLogPath 來改變文件名稱或位置:
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/set-log-path.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;
// Configure logging before calling any rendering methods
Settings.setLogPath(Paths.get("logs/ironpdf.log"));
Settings.setLogPath。 在已開始渲染之後進行的調用將不生效。如何將 HTML 字串轉換為 Java 中的 PDF?
PdfDocument.renderHtmlAsPdf 將 HTML 字串轉換為 PdfDocument 物件,然後可以將其保存到磁碟或傳遞給其他處理方法。 此方法接受任何符合 W3C 標準的 HTML,包括帶有 <head> 和 <body> 元素的完整頁面標記。
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/html-string-to-pdf.java
import com.ironsoftware.ironpdf.*;
// Convert a simple HTML string to PDF
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
// Save the resulting PDF to a file
pdf.saveAs("htmlstring_to_pdf.pdf");
該方法返回一個 PdfDocument 實例。 調用 saveAs 將 PDF 寫入磁碟,或使用 getBinaryData 來獲取流或儲存的原始 PDF 字節。
renderHtmlAsPdf 處理所有 HTML,CSS 和 JavaScript 內容,就像標準合規瀏覽器所做的那樣。 生成的 PDF 完全反映了在 Chrome 瀏覽器中查看時的頁面樣式。
有關此方法的更多詳情,請參閱 IronPDF Java 範例頁中的 HTML 字串到 PDF 程式碼範例。
如何在 HTML 字串中載入本地資產?
HTML 通常通過相對路徑引用外部資產(樣式表,圖像,腳本)。 renderHtmlAsPdf 接受可選的第二個參數,設置基礎路徑以解析這些引用。 基礎路徑可以指向本地目錄或 URL。
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/html-string-local-assets.java
import com.ironsoftware.ironpdf.*;
// HTML with references to local stylesheets and images
String html = "<html>"
+ "<head>"
+ "<title>Invoice</title>"
+ "<link rel='stylesheet' type='text/css' href='style.css'>"
+ "</head>"
+ "<body>"
+ "<div class='content'>"
+ "<h1>Invoice #1001</h1>"
+ "<img src='logo.png' alt='Company Logo'/>"
+ "</div>"
+ "</body>"
+ "</html>";
// The second argument resolves relative asset paths
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html, "C:/invoices/");
pdf.saveAs("invoice.pdf");
基礎路徑參數適用於絕對文件系統路徑和 URL 字串。 這使得 renderHtmlAsPdf 適合從磁碟保存的模板或從網路伺服器提供的模板生成 PDF。
C:\invoices\) 應轉換為正斜杠或使用 Paths.get() 以便跨平台相容。如何將 URL 轉換為 Java 中的 PDF?
PdfDocument.renderUrlAsPdf 抓取指定 URL 的即時網頁並將其渲染為 PDF。 此方法載入整個頁面,包括所有外部 CSS、JavaScript 和圖像,然後進行渲染。
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/url-to-pdf.java
import com.ironsoftware.ironpdf.*;
// Render a live web page as a PDF document
PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.saveAs("url_to_pdf.pdf");
renderUrlAsPdf 等待 JavaScript 執行完成後再捕獲渲染頁面,這意味著動態生成的內容(如圖表或通過 AJAX 載入的資料)將出現在輸出 PDF 中。
如需 .NET 同等實現或其他 URL 到 PDF 選項,請參閱 將 URL 轉換為 PDF 的程式碼範例。
如何將 HTML 文件轉換為 Java 中的 PDF?
PdfDocument.renderHtmlFileAsPdf 讀取本地 HTML 文件並將其渲染為 PDF。 HTML 文件中引用的所有相對路徑(樣式表、圖像、腳本)將相對於 HTML 文件的目錄進行解析。
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/html-file-to-pdf.java
import com.ironsoftware.ironpdf.*;
// Convert a local HTML file to PDF
// IronPDF resolves relative asset paths from the HTML file's directory
PdfDocument pdf = PdfDocument.renderHtmlFileAsPdf("C:/invoices/TestInvoice1.html");
pdf.saveAs("htmlfile_to_pdf.pdf");
此方法適用於模版文件生成:與其關聯的 CSS 和圖像資產一起儲存為 HTML 文件的發票模板、報告或證書。 IronPDF 與瀏覽器一樣精確地渲染文件,保留所有的 CSS 佈局規則。
renderHtmlFileAsPdf 的相對路徑將從 JVM 工作目錄解析,這可能會在伺服器環境中產生意想不到的結果。如何自定義 PDF 輸出設置?
PdfRenderOptions 類控制頁面佈局和渲染行為。 建立一個 PdfRenderOptions 實例,配置所需屬性,然後將其傳遞給任何渲染方法。
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/render-options.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;
// Configure rendering options before generating the PDF
PdfRenderOptions options = new PdfRenderOptions();
// Set the zoom level (100 = normal size)
options.setZoom(100);
// Wait for JavaScript to finish before rendering
options.setJavascriptTimeout(5000);
// Enable printing of background colors and images
options.setPrintBackground(true);
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(
"<h1>Customized PDF</h1>",
options
);
pdf.saveAs("customized.pdf");
PdfRenderOptions 類提供其他屬性來控制 DPI、視窗寬度、紙張方向和超時值。 請參閱 PDF 生成設置程式碼範例 以獲取所有可用選項的完整列表。
如何為 PDF 新增頁眉和頁腳?
IronPDF 支持基於文字和基於 HTML 的頁眉和頁腳。 文字頁眉使用預定義的合併欄位表示常見的值,如頁碼和文件標題; HTML 頁眉接受任意 HTML 標記,用於完全自定義的佈局。
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/headers-footers.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.headerfooter.*;
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Annual Report</h1><p>Content goes here.</p>");
// Create a text-based header using merge fields
TextHeaderFooter header = new TextHeaderFooter();
header.setCenterText("Annual Report");
header.setRightText("{page} of {total-pages}");
header.setFont(com.ironsoftware.ironpdf.font.FontTypes.Helvetica);
header.setFontSize(10.0);
// Create a text-based footer
TextHeaderFooter footer = new TextHeaderFooter();
footer.setLeftText("Confidential");
footer.setRightText("Generated by IronPDF");
pdf.addTextHeaders(header);
pdf.addTextFooters(footer);
pdf.saveAs("report_with_headers.pdf");
{page} 和 {total-pages} 合併欄位在渲染時被當前頁碼和總頁數替代。 對於更高級的佈局,如附有公司標識的頁腳,請使用 HtmlHeaderFooter 代替 TextHeaderFooter。
有關基於 HTML 的頁眉和頁腳的完整詳細資訊,請參閱新增頁眉和頁腳程式碼範例。
如何設置自定義邊距和頁面大小?
頁面大小和邊距在 PDF 渲染之前配置在 PdfRenderOptions 物件上。 IronPDF 支持標準紙張大小(A4、Letter、Legal)和完全自定義尺寸。
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/margins-page-size.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;
import com.ironsoftware.ironpdf.page.*;
PdfRenderOptions options = new PdfRenderOptions();
// Set margins in millimeters: top, right, bottom, left
options.setMarginTop(25);
options.setMarginRight(20);
options.setMarginBottom(25);
options.setMarginLeft(20);
// Use A4 paper size
options.setPaperSize(PaperSize.A4);
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Formatted Document</h1>", options);
pdf.saveAs("formatted_document.pdf");
有關支持紙張尺寸和單位的完整列表,請參閱自定義紙張尺寸程式碼範例和自定義邊距程式碼範例。
如何為 PDF 新增水印?
PdfDocument.applyWatermark 將文字或圖像水印應用於文件中的每一頁。 預設情況下,水印會在獨立層上渲染在頁面內容的下方,或者將 isStampBehind 標誌設置為 false 時位於其上方。
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/add-watermark.java
import com.ironsoftware.ironpdf.*;
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Confidential Document</h1>");
// Apply an HTML watermark; supports full CSS styling
String watermarkHtml = "<h1 style='color: rgba(200, 0, 0, 0.2); transform: rotate(-45deg); font-size: 60px;'>DRAFT</h1>";
// Second argument: opacity (0-100), third: rotation (degrees), fourth: stamp behind content
pdf.applyWatermark(watermarkHtml, 50, 45, true);
pdf.saveAs("draft_watermarked.pdf");
HTML 方法提供對水印樣式的精準控制,包括字體、大小、顏色和透明度。 有關高級水印配置,如重複磁貼模式或基於圖像的戳記,請參見水印使用指南。
如何從 Java 中的 PDF 提取文字?
PdfDocument.extractAllText 讀取 PDF 中嵌入的文字內容並將其作為單個 String 返回。 此方法從文件中所有頁面提取可選擇的文字。
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/extract-text.java
import com.ironsoftware.ironpdf.*;
// Load an existing PDF from disk
PdfDocument pdf = PdfDocument.fromFile(java.nio.file.Paths.get("report.pdf"));
// Extract all embedded text from the document
String text = pdf.extractAllText();
System.out.println(text);
文字提取適用於文字儲存為可選擇字形的 PDF。對於基於圖像掃描的 PDF,考慮將 IronPDF 與 OCR 程式庫結合使用,從渲染的頁面圖像中提取文字。
有關其他選項(包括每頁文字提取),請參見從 PDF 提取文字程式碼範例。
如何從 Java 中的 PDF 提取圖像?
PdfDocument.extractAllImages 返回一個 BufferedImage 物件列表,每個嵌入在 PDF 中的圖像對應一個物件。 返回的圖像可以直接保存到磁碟或傳遞給下游的圖像處理邏輯。
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/extract-images.java
import com.ironsoftware.ironpdf.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.List;
import javax.imageio.ImageIO;
// Load an existing PDF
PdfDocument pdf = PdfDocument.fromFile(java.nio.file.Paths.get("document.pdf"));
// Extract all embedded images
List<BufferedImage> images = pdf.extractAllImages();
for (int i = 0; i < images.size(); i++) {
ImageIO.write(images.get(i), "PNG", new File("extracted_image_" + i + ".png"));
}
System.out.println("Extracted " + images.size() + " image(s).");
如需更多提取選項,包括從特定頁面提取圖像,請參見從 PDF 提取圖像程式碼範例。
如何壓縮 PDF 文件?
PdfDocument.compressImages 通過以較低質量重新編碼嵌入圖像來減小 PDF 文件大小。 該方法接受一個從 1(最低質量,最小文件)到 100(最高質量)的質量值。
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/compress-pdf.java
import com.ironsoftware.ironpdf.*;
// Load a large PDF with embedded images
PdfDocument pdf = PdfDocument.fromFile(java.nio.file.Paths.get("large_report.pdf"));
// Compress images to 60% quality to reduce file size
pdf.compressImages(60);
pdf.saveAs("large_report_compressed.pdf");
圖像壓縮是減小包含照片或高解析度圖形的 PDF 大小的最有效方法。 如需更多減小文件大小策略(如剝離嵌入字體),請參見PDF 壓縮程式碼範例。
如何以編程方式列印 PDF?
PdfDocument.print 使用標準 Java 列印 API 將 PDF 發送到系統的預設列印機。 該方法接受一個布林值,用於控制是否顯示列印對話框。
:path=/static-assets/pdf/content-code-examples/tutorials/generate-pdfs/print-pdf.java
import com.ironsoftware.ironpdf.*;
PdfDocument pdf = PdfDocument.fromFile(java.nio.file.Paths.get("document.pdf"));
// Print silently to the default printer (no dialog shown)
pdf.print(false);
將 true 傳遞給 print 方法以顯示系統列印對話框,允許使用者選擇列印機並在作業發送之前配置列印設置。
下一步
本教程涵蓋了 IronPDF for Java 中的核心 HTML 到 PDF 轉換方法,以及安裝、配置和常見文件處理操作。
要瞭解更多:
- 瀏覽完整的HTML 到 PDF Java 程式碼範例以獲取未涵蓋的其他渲染場景。
- 閱讀IronPDF for Java 文件以瞭解部署、執行緒安全性和伺服器配置。
- 探索完整的IronPDF Java API 參考以獲取詳細的方法簽名和參數描述。
開始免費試用以生成無水印 PDF,或查看授權選項以找到適合您專案的計劃。
教程快速存取
在GitHub上探索這個教程
此項目的源程式碼作為 IntelliJ IDEA 專案在 GitHub 上可用。它可以導入到其他受歡迎的 Java IDE 中,包括 Eclipse 和 NetBeans。
在 GitHub 上的 Java HTML 到 PDF常見問題
IronPDF for Java用途是什麼?
IronPDF for Java將HTML內容轉換為Java應用程式內的PDF文件。支持轉換HTML字串、本地HTML文件和實時Web頁面URL,並提供新增頁首和頁尾、浮水印、文字提取、圖片提取及文件壓縮的工具。
如何在Java專案中安裝IronPDF?
在您的pom.xml中新增兩個Maven依賴:com.ironsoftware:ironpdf和org.slf4j:slf4j-simple,然後運行mvn install。或者,從Maven Central下載fat JAR並新增到專案類路徑。
如何在Java中將HTML字串轉換為PDF?
使用您的HTML標記呼叫PdfDocument.renderHtmlAsPdf(htmlString)。該方法返回一個PdfDocument物件。呼叫pdf.saveAs("output.pdf")將其寫入磁碟。
如何在Java中將URL轉換為PDF?
呼叫PdfDocument.renderUrlAsPdf("https://example.com")。IronPDF獲取頁面,等待JavaScript執行,然後將完全載入的頁面渲染為PDF。
如何在Java中將本地HTML文件轉換為PDF?
呼叫PdfDocument.renderHtmlFileAsPdf("C:/path/to/file.html")。使用絕對文件路徑。IronPDF會自動解決HTML文件目錄中的相對CSS和圖片引用。
IronPDF for Java是否會在生成的PDF中新增浮水印?
如果沒有授權金鑰,IronPDF會在所有生成的PDF上新增平鋪浮水印。請在任何渲染呼叫之前設定一個有效的授權金鑰,以移除浮水印:License.setLicenseKey("YOUR-KEY")。
IronPDF 需要哪個 Java 版本?
IronPDF for Java需要Java 8或更高版本。相容Spring Boot、Java EE、Micronaut及其他基於JVM的框架。
如何在Java中使用IronPDF在PDF中新增頁碼?
建立一個TextHeaderFooter實例,然後呼叫setRightText("{page} of {total-pages}")。將物件傳遞給pdf.addTextFooters(footer)。合併欄位在渲染時被替換為實際的頁碼。
IronPDF for Java能從PDF中提取文字嗎?
是的。使用PdfDocument.fromFile(Paths.get("file.pdf"))載入PDF,然後呼叫pdf.extractAllText()以檢索所有可選文字內容為字串。
如何在Java中減少PDF的文件大小?
呼叫pdf.compressImages(quality),其中quality是1到100的整數。值為60時提供了文件大小和圖像保真度之間的良好平衡,適合大多數PDFs。





