如何在Java中建立PDF文件
在Java中建立PDF文件是商業應用的常見需求:按需生成發票和報告、製作證書、收據和審計日誌。 IronPDF for Java使用完整的Chromium渲染引擎將HTML轉換為PDF,這意味著任何HTML5、CSS3和JavaScript內容都能忠實地呈現,沒有格式丟失。
本指南涵蓋三種PDF建立方法:從HTML字串、從本地HTML文件和從線上URL建立。 它還涵蓋頁面格式化、密碼保護和Spring Boot整合。
快速入門:在Java中從HTML建立PDF
- 將IronPDF新增到您的
pom.xml:
//:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/maven-dependency.xml
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2024.9.1</version>
</dependency>
//:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/maven-dependency.xml
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2024.9.1</version>
</dependency>
- 匯入程式庫並建立PDF:
:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/quickstart.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;
// Set your license key (remove watermarks in production)
License.setLicenseKey("Your-License-Key");
// Convert HTML string to PDF and save
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello, IronPDF!</h1>");
pdf.saveAs(Paths.get("output.pdf"));
如何在Java中建立PDF文件
- 通過Maven或Gradle安裝IronPDF Java程式庫
- 匯入
com.ironsoftware.ironpdf.*並設置您的授權金鑰 - 調用
PdfDocument.renderHtmlAsPdf(),使用HTML字串在記憶體中建立PDF - 使用
PdfDocument.renderHtmlFileAsPdf()將本地HTML文件轉換為PDF - 調用
pdf.saveAs()將完成的文件保存到磁碟
什麼是IronPDF for Java,為什麼要使用它?
IronPDF for Java是基於Chromium渲染引擎的PDF生成和操作程式庫。由於它與Chrome一樣準確地渲染HTML,它可以處理複雜的佈局、自定義字體、CSS動畫、JavaScript生成的內容和嵌入的圖片,無需手動佈局程式碼。
該程式庫涵蓋PDF的完整生命周期,僅需一個依賴。 開發者可以從頭開始建立文件、轉換現有HTML內容、合併或拆分文件、新增水印、用密碼加密、提取文字和圖片,以及生成可填寫的表單,所有這些都通過一致的API完成。 對於HTML密集型工作流程,IronPDF避免了像Apache PDFBox這樣的低層PDF程式庫所需的手動頁面佈局計算。
與iText不同,iText在大多數商業用途中需要AGPL開源授權,IronPDF提供商業友好的授權,且不需要進行複雜的授權合規審查。 IronPDF for Java以Maven artifact的形式發佈,可運行在Windows, Linux和macOS上。 它可以與Spring Boot, Jakarta EE和獨立Java應用整合。 該程式庫還支援在AWS, Azure和Google Cloud上的伺服器部署。
在Java中使用IronPDF有哪些先決條件?
需要哪個Java版本和構建工具?
IronPDF for Java需要JDK 8或更高版本。 生產環境推薦的最低版本是JDK 11(LTS)。 從Oracle下載頁面下載JDK或使用OpenJDK發行版,如Eclipse Temurin。
Maven (3.6+)和Gradle (7.0+)都被支援。 對於企業級Java項目,Maven是更常見的選擇。
我如何將IronPDF新增到Maven專案中?
打開專案的<dependencies>區塊中新增以下依賴:
//:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/maven-full.xml
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2024.9.1</version>
</dependency>
//:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/maven-full.xml
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2024.9.1</version>
</dependency>
保存後,運行mvn install或讓您的IDE自動解析依賴。 Maven從Maven Central下載IronPDF,所以不需要私有庫配置。
我如何將IronPDF新增到Gradle專案中?
在您的dependencies區塊中新增以下行:
//:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/gradle-dependency.gradle
implementation 'com.ironsoftware:ironpdf:2024.9.1'
運行gradle build以獲取程式庫。 查看Maven Central了解最新的發行版本。
需要什麼匯入和配置?
在Java源文件的開頭新增這些匯入語句:
:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/imports.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.ChromePdfRenderOptions;
import com.ironsoftware.ironpdf.render.PaperOrientation;
import com.ironsoftware.ironpdf.render.PaperSize;
import com.ironsoftware.ironpdf.security.SecurityOptions;
import com.ironsoftware.ironpdf.security.SecurityManager;
import java.io.IOException;
import java.nio.file.Paths;
在生成任何PDF之前,在main方法或應用啟動時設置您的授權金鑰:
//:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/license-setup.java
License.setLicenseKey("Your-License-Key");
//:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/license-setup.java
License.setLicenseKey("Your-License-Key");
注意:沒有有效的授權金鑰,生成的PDF會帶有試用水印。 購買授權或開始免費試用以移除它。 參見在Java中使用授權金鑰以進一步配置選項。
如何在Java中從HTML字串建立PDF?
直接將任何HTML字串傳遞給PdfDocument.renderHtmlAsPdf()。 IronPDF返回一個PdfDocument實例,表示記憶體中的完成文件。 調用saveAs()將其寫入磁碟。
:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/html-string-to-pdf.java
// HTML content with inline CSS
String htmlContent = "<h1>Hello World!</h1><p>This is an example HTML string.</p>";
// Render HTML string to PDF
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(htmlContent);
// Save to disk
pdf.saveAs(Paths.get("html.pdf"));
renderHtmlAsPdf() 支援完整的HTML5和CSS3規範,包括Web字體、Flexbox、Grid佈局和JavaScript執行。 以下範例使用帶有自定義樣式的多行HTML模板:
:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/html-string-styled.java
// Multi-line HTML with CSS styling using a text block (Java 13+)
String styledHtml = """
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
h1 { color: #2563eb; border-bottom: 2px solid #e5e7eb; padding-bottom: 8px; }
.summary { background: #f3f4f6; padding: 16px; border-radius: 4px; }
</style>
</head>
<body>
<h1>Invoice #1042</h1>
<div class="summary">
<p>Amount due: $1,250.00</p>
<p>Due date: 2024-06-01</p>
</div>
</body>
</html>
""";
PdfDocument invoice = PdfDocument.renderHtmlAsPdf(styledHtml);
invoice.saveAs(Paths.get("invoice.pdf"));
上面的發票範例使用Java文字塊(自Java 13起可用)以便於處理多行HTML。 對於較早的Java版本,手動拼接HTML字串或使用renderHtmlFileAsPdf()從文件中載入它。 有關更廣泛的HTML到PDF轉換,包括JavaScript渲染,請參見Java的HTML到PDF教程。
如何在Java中從本地HTML文件建立PDF?
使用PdfDocument.renderHtmlFileAsPdf()將儲存在本地文件系統上的HTML文件轉換。 將路徑作為字串傳遞; 相對路徑會根據當前工作目錄解析:
:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/html-file-to-pdf.java
// Convert a local HTML file to PDF
PdfDocument filePdf = PdfDocument.renderHtmlFileAsPdf("invoice-template.html");
// Save the converted document
filePdf.saveAs(Paths.get("invoice_output.pdf"));
IronPDF根據HTML文件的目錄解析所有引用的資產(外部CSS文件、本地圖片和JavaScript庫)。 這意味著您可以構建一個完整的HTML模板,帶有連結的樣式表,並通過IronPDF運行而不需修改任何資產路徑。
該方法接受java.nio.file.Path物件。 對於生產用途,使用絕對路徑以避免工作目錄模糊。 請參見HTML文件到PDF範例以獲得完整的工作範例。
如何在Java中從網頁URL建立PDF?
PdfDocument.renderUrlAsPdf()抓取一個實時URL,將其渲染為Chromium並返回一個PDF。 這對於捕獲儀表板快照、從託管的收據頁面生成PDF收據或存檔網頁內容很有用:
:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/url-to-pdf.java
// Render a live web page to PDF
PdfDocument webPdf = PdfDocument.renderUrlAsPdf("https://ironpdf.com");
webPdf.saveAs(Paths.get("ironpdf-homepage.pdf"));
對於需要HTTP認證的頁面,通過ChromePdfRenderOptions傳遞憑證:
:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/url-to-pdf-auth.java
// Configure render options with login credentials
ChromePdfRenderOptions renderOptions = new ChromePdfRenderOptions();
renderOptions.setAuthUsername("username");
renderOptions.setAuthPassword("password");
// Render authenticated page to PDF
PdfDocument securedPdf = PdfDocument.renderUrlAsPdf("https://your-internal-app.com/report", renderOptions);
securedPdf.saveAs(Paths.get("internal-report.pdf"));
有關詳細資訊,請參見URL到PDF程式碼範例。 有關更複雜的登錄流程,如使用cookie或基於表單的認證,請參見網站登錄處理。
如何控制頁面大小、方向和邊距?
使用ChromePdfRenderOptions自定義輸出PDF的物理佈局。 將配置的選項作為第二個參數傳遞給任何渲染方法。 最常見的設置是頁面方向、紙張大小和邊距:
:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/pdf-formatting.java
ChromePdfRenderOptions renderOptions = new ChromePdfRenderOptions();
// Set landscape orientation (default is portrait)
renderOptions.setPaperOrientation(PaperOrientation.LANDSCAPE);
// Use US Letter paper size (default is A4)
renderOptions.setPaperSize(PaperSize.LETTER);
// Set margins in millimeters (top, right, bottom, left)
renderOptions.setMarginTop(15);
renderOptions.setMarginRight(15);
renderOptions.setMarginBottom(15);
renderOptions.setMarginLeft(15);
// Include background colors and images
renderOptions.setPrintHtmlBackgrounds(true);
// Apply options when rendering
PdfDocument report = PdfDocument.renderHtmlAsPdf("<h1>Quarterly Report</h1>", renderOptions);
report.saveAs(Paths.get("report.pdf"));
ChromePdfRenderOptions暴露了超過30種設置,超過上面顯示的,包括DPI、JavaScript執行超時、縮放因子和CSS媒體型別。 請參閱PDF生成設置以獲得完整列表。對於PaperSize枚舉中不存在的自定義紙張大小,請參見自定義PDF紙張大小。
如何在Java中為PDF新增密碼保護?
SecurityOptions控制讀取和所有者密碼以及權限標誌。 將SecurityManager然後保存:
:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/password-protect-basic.java
// Create security settings with a user-facing password
SecurityOptions securityOptions = new SecurityOptions();
securityOptions.setUserPassword("shareable");
// Apply security to the document
PdfDocument urlPdf = PdfDocument.renderUrlAsPdf("https://ironpdf.com");
SecurityManager securityManager = urlPdf.getSecurity();
securityManager.setSecurityOptions(securityOptions);
// Save the password-protected document
urlPdf.saveAs(Paths.get("protected.pdf"));
為了更嚴格的控制,設置一個所有者密碼並限制特定操作:
//:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/password-protect-advanced.java
SecurityOptions advancedSecurity = new SecurityOptions();
// User password: required to open the file
advancedSecurity.setUserPassword("user-open-pass");
// Owner password: required to change security settings
advancedSecurity.setOwnerPassword("owner-admin-pass");
// Restrict editing operations
advancedSecurity.setAllowPrint(false);
advancedSecurity.setAllowCopy(false);
advancedSecurity.setAllowEditContent(false);
advancedSecurity.setAllowEditAnnotations(false);
//:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/password-protect-advanced.java
SecurityOptions advancedSecurity = new SecurityOptions();
// User password: required to open the file
advancedSecurity.setUserPassword("user-open-pass");
// Owner password: required to change security settings
advancedSecurity.setOwnerPassword("owner-admin-pass");
// Restrict editing operations
advancedSecurity.setAllowPrint(false);
advancedSecurity.setAllowCopy(false);
advancedSecurity.setAllowEditContent(false);
advancedSecurity.setAllowEditAnnotations(false);
打開PDF時提示讀取者輸入密碼:
輸入正確的密碼後,PDF打開並顯示完整內容:
請參見安全和元資料設置以獲得權限標誌的完整列表。
如何在Spring Boot應用中生成PDF?
IronPDF直接與Spring Boot整合。 從任何控制器方法返回PDF作為字節陣列HTTP響應; 此模式適用於按需報告生成、發票下載和資料導出。
//:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/spring-boot-controller.java
import com.ironsoftware.ironpdf.*;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
@RestController
@RequestMapping("/api/pdf")
public class PdfController {
@GetMapping("/invoice/{id}")
public ResponseEntity<byte[]> generateInvoice(@PathVariable String id) throws IOException {
// Build HTML dynamically using the invoice ID
String html = """
<html><body>
<h1>Invoice #%s</h1>
<p>Amount due: $500.00</p>
</body></html>
""".formatted(id);
// Render and return as PDF download
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);
byte[] pdfBytes = pdf.getBinaryData();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_PDF);
headers.setContentDispositionFormData("attachment", "invoice-" + id + ".pdf");
return ResponseEntity.ok().headers(headers).body(pdfBytes);
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/java-create-pdf-tutorial/spring-boot-controller.java
import com.ironsoftware.ironpdf.*;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
@RestController
@RequestMapping("/api/pdf")
public class PdfController {
@GetMapping("/invoice/{id}")
public ResponseEntity<byte[]> generateInvoice(@PathVariable String id) throws IOException {
// Build HTML dynamically using the invoice ID
String html = """
<html><body>
<h1>Invoice #%s</h1>
<p>Amount due: $500.00</p>
</body></html>
""".formatted(id);
// Render and return as PDF download
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);
byte[] pdfBytes = pdf.getBinaryData();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_PDF);
headers.setContentDispositionFormData("attachment", "invoice-" + id + ".pdf");
return ResponseEntity.ok().headers(headers).body(pdfBytes);
}
}
getBinaryData()方法將PDF作為字節陣列返回,Spring Boot將其直接流向客戶端。 沒有臨時文件寫入磁碟。 對於高吞吐量部署,將@PostConstruct方法或應用啟動監聽器中,而不是每個請求。
Java PDF建立的下一步是什麼?
本指南使用IronPDF演示了四種Java中的PDF生成方法:HTML字串渲染、本地文件轉換、URL捕獲和Spring Boot HTTP響應流媒體。 所有方法共享相同的PdfDocument API,ChromePdfRenderOptions 用於格式控制,SecurityOptions 用於存取保護。
IronPDF for Java還支援新增和蓋章水印,合併多個PDF文件,將PDF分成獨立頁面,新增數位簽名,將JavaScript圖表渲染為PDF,以及程式化列印PDF。
開始免費試用以生成無水印的PDF,或查看授權選項以選擇最合適您的專案的計劃。 準備進一步探索嗎? 查看完整的IronPDF for Java教程頁面。
常見問題
如何在 Java 中從 HTML 字串建立 PDF?
將您的 HTML 字串傳遞給 PdfDocument.renderHtmlAsPdf()。該方法在記憶體中返回一個 PdfDocument 物件。呼叫 pdf.saveAs(Paths.get("output.pdf")) 將其寫入磁碟。IronPDF 支援完整的 HTML5、CSS3 和 JavaScript。
IronPDF 需要哪個 Java 版本?
IronPDF for Java 需 JDK 8 或更新版本。JDK 11 LTS 是生產部署的推薦最低版本。
如何將 IronPDF 新增到 Maven 專案?
在您的 pom.xml 的 <dependencies> 區塊中,新增 groupId com.ironsoftware 和 artifactId ironpdf 的相依性,然后運行 mvn install。
如何在 Java 中從本地 HTML 檔案建立 PDF?
using HTML 檔案的路徑呼叫 PdfDocument.renderHtmlFileAsPdf()。IronPDF 自動解析與檔案目錄相關的所有連結 CSS、圖像和 JavaScript。
能否在 Java 中從 URL 建立 PDF?
是的。使用目標 URL 呼叫 PdfDocument.renderUrlAsPdf()。IronPDF 使用 Chromium 擷取頁面並返回一個 PdfDocument。對於需要 HTTP 認證的頁面,可通過 ChromePdfRenderOptions 傳遞憑證。
如何在 Java 中使用 IronPDF 密碼保護 PDF?
建立一個 SecurityOptions 物件,使用您的密碼呼叫 setUserPassword(),然後在呼叫 saveAs() 之前,將選項傳遞給 urlPdf.getSecurity().setSecurityOptions()。
如何在 Spring Boot 應用程式中使用 IronPDF?
將您的 PDF 生成邏輯注入到 @RestController 方法中。呼叫 PdfDocument.renderHtmlAsPdf(),然後使用 pdf.getBinaryData() 獲取位元組陣列,並以 MediaType.APPLICATION_PDF 的 ResponseEntity<byte[]> 返回。
如何在 IronPDF for Java 中設定頁面尺寸和方向?
建立一個 ChromePdfRenderOptions 物件,呼叫 setPaperSize() 和 setPaperOrientation(),然後將其作為第二個參數傳遞給任何渲染方法。在設定方向之前設定紙張尺寸以避免排序衝突。
IronPDF 在 Linux 和 macOS 上的 Java 版本能運行嗎?
是的。IronPDF for Java 能在 Windows、Linux 和 macOS 上運行。它還支援不需要外部 PDF 檢視器或渲染引擎的 AWS、Azure 和 Google Cloud 上的雲端部署。
沒有授權金鑰 PDF 是否會有浮水印?
是的。沒有有效的授權金鑰,IronPDF 在所有生成的文件中新增試用浮水印。在應用程式啟動時使用有效金鑰呼叫 License.setLicenseKey() 以移除它。




