在Java中將HTML轉換為PDF

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

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中找到。

請注意IronPDF for Java 需要 Java 8 或更高版本,並且與所有主要的基於 JVM 的框架相容,包括 Spring Boot、Java EE 和 Micronaut。

快速入門:從 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");
JAVA

今天就使用IronPDF開始專案,免費試用。

第一步:
green arrow pointer

目錄


如何在 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>
XML

第一個 artifact 用於拉取 IronPDF。 第二個是 SLF4J 日誌實現。 IronPDF 使用 SLF4J 來發出渲染過程中的診斷消息; 您可以用 LogbackLog4j 2 替代,或完全省略日誌記錄。

在專案根目錄執行 mvn install 以下載依賴項。 在指定版本號前,檢查IronPDF 的最新版本,因為更改日誌列出了所有當前和過去的版本。

手動安裝 JAR

不使用 Maven 的開發人員可以從 Maven Central 直接下載 IronPDF fat JAR,並將之新增到專案類別路徑。 fat JAR 包含了所有傳遞依賴項。

提示Maven 是新專案推薦的方法。 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.*;
JAVA

設置授權金鑰

如果沒有授權金鑰,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");
JAVA

將此调用放置於應用程式啓動時,在任何 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"));
JAVA

重要在调用任何 PDF 轉換或操作方法之前調用 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");
JAVA
PDF 輸出結果,顯示使用 PdfDocument.renderHtmlAsPdf 從 HTML 字串產生並渲染的 H1 標題

PdfDocument.renderHtmlAsPdf 方法將 HTML 標記渲染為 PDF,保留所有符合 W3C 標準的樣式和結構。

該方法返回一個 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");
JAVA
PDF 輸出結果,顯示一張發票,具有設定樣式的版面、標誌影像,以及從本機資源套用的 CSS 格式

當提供了基礎路徑時,renderHtmlAsPdf 將解析相對資產引用,並從該目錄中生成完全樣式化的 PDF。

基礎路徑參數適用於絕對文件系統路徑和 URL 字串。 這使得 renderHtmlAsPdf 適合從磁碟保存的模板或從網路伺服器提供的模板生成 PDF。

提示使用 Windows 風格反斜杠的路徑 (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");
JAVA
關於 PDF 格式之維基百科條目的 PDF 輸出,顯示由 PdfDocument.renderUrlAsPdf 渲染的頁面版面與內容

PdfDocument.renderUrlAsPdf 方法捕獲網頁的全部渲染狀態,包括由 JavaScript 渲染的內容。

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");
JAVA

此方法適用於模版文件生成:與其關聯的 CSS 和圖像資產一起儲存為 HTML 文件的發票模板、報告或證書。 IronPDF 與瀏覽器一樣精確地渲染文件,保留所有的 CSS 佈局規則。

請注意HTML 文件路徑必須是絕對的。 傳遞給 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");
JAVA

PdfRenderOptions 類提供其他屬性來控制 DPI、視窗寬度、紙張方向和超時值。 請參閱 PDF 生成設置程式碼範例 以獲取所有可用選項的完整列表。

Icon Quote related to 如何自定義 PDF 輸出設置?

我最喜歡的程式庫是IronPDF。它允許快速高效地操作PDF文件。它還有許多有價值的功能,例如導出到PDF/A格式和數位簽署PDF文件。

Milan Jovanovic related to 如何自定義 PDF 輸出設置?

Milan Jovanovic

Microsoft MVP

查看案例研究
Icon Quote related to 如何自定義 PDF 輸出設置?

IronOCR意味著我們每年可以從手動處理中節省$40,000,同時提高生產力,釋放資源以進行高影響的任務。我會強烈推薦它。

Brent Matzelle related to 如何自定義 PDF 輸出設置?

Brent Matzelle

首席技術官,OPYN

查看案例研究
Icon Quote related to 如何自定義 PDF 輸出設置?

IronSuite在我們的運營中扮演著至關重要的角色。這些工具增加了包括建立平面圖和改善庫存管理在內的業務效率。

David Jones related to 如何自定義 PDF 輸出設置?

David Jones

首席軟體工程師,Agorus Build

查看案例研究

如何為 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");
JAVA

{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");
JAVA

有關支持紙張尺寸和單位的完整列表,請參閱自定義紙張尺寸程式碼範例自定義邊距程式碼範例

如何為 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");
JAVA

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);
JAVA

文字提取適用於文字儲存為可選擇字形的 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).");
JAVA

如需更多提取選項,包括從特定頁面提取圖像,請參見從 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");
JAVA

圖像壓縮是減小包含照片或高解析度圖形的 PDF 大小的最有效方法。 如需更多減小文件大小策略(如剝離嵌入字體),請參見PDF 壓縮程式碼範例

提示質量值介於 40 到 70 之間通常為大多數 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);
JAVA

true 傳遞給 print 方法以顯示系統列印對話框,允許使用者選擇列印機並在作業發送之前配置列印設置。

下一步

本教程涵蓋了 IronPDF for Java 中的核心 HTML 到 PDF 轉換方法,以及安裝、配置和常見文件處理操作。

要瞭解更多:

  1. 瀏覽完整的HTML 到 PDF Java 程式碼範例以獲取未涵蓋的其他渲染場景。
  2. 閱讀IronPDF for Java 文件以瞭解部署、執行緒安全性和伺服器配置。
  3. 探索完整的IronPDF Java API 參考以獲取詳細的方法簽名和參數描述。

開始免費試用以生成無水印 PDF,或查看授權選項以找到適合您專案的計劃。


教程快速存取

Java 開發的 IntelliJ IDEA IDE 標誌

下載本教程為Java源程式碼

本教程中完整的 HTML 到 PDF Java 源程式碼可作為壓縮的 IntelliJ 專案下載。

下載

在GitHub上探索這個教程

此項目的源程式碼作為 IntelliJ IDEA 專案在 GitHub 上可用。它可以導入到其他受歡迎的 Java IDE 中,包括 Eclipse 和 NetBeans。

在 GitHub 上的 Java HTML 到 PDF
源程式碼儲存庫的 GitHub 標誌
IronPDF Java API 參考文件圖標

查看API參考

探索 IronPDF Java API 參考,涵蓋程式庫中的所有命名空間、類、方法和枚舉。

查看API參考

常見問題

IronPDF for Java用途是什麼?

IronPDF for Java將HTML內容轉換為Java應用程式內的PDF文件。支持轉換HTML字串、本地HTML文件和實時Web頁面URL,並提供新增頁首和頁尾、浮水印、文字提取、圖片提取及文件壓縮的工具。

如何在Java專案中安裝IronPDF?

在您的pom.xml中新增兩個Maven依賴:com.ironsoftware:ironpdforg.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。

Darrius Serrant
全端軟體工程師(WebOps)

Darrius Serrant擁有邁阿密大學的電腦科學學士學位,並在Iron Software擔任全端WebOps行銷工程師。從小就對程式設計有興趣,他認為計算既神秘又易於理解,成為創意和問題解決的完美媒介。

在Iron Software,Darrius喜歡創造新事物並簡化複雜的概念,使其更易於理解。作為我們的常駐開發人員之一,他還志願教學,將他的專業知識傳授給下一代。

對Darrius來說,他的工作是有意義的,因為它有價值且對社會有真正的影響。

準備好開始了嗎?
版本: 2026.6 剛剛發布
Still Scrolling Icon

還在滾動嗎?

想要快速證明嗎?
運行範例 觀看您的HTML變成PDF。