用 Java 将 HTML 转换为 PDF.

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

IronPDF for Java为开发者提供了从HTML内容到PDF输出的直接路径,无需学习单独的布局API。 库以现代浏览器的方式呈现HTML、CSS和JavaScript,因此PDF输出与您在屏幕上看到的内容相匹配。 本教程介绍了安装、三个核心的HTML到PDF转换方法,以及包括页眉、页脚、页面尺寸和自定义边距的格式选项。

教程使用IronPDF for Java。 提供了.NET版本的平行指南,可在HTML到PDF转换教程for .NET中找到。 IronPDF也可用于PythonNode.js

快速入门:将HTML转换为PDF文件

从HTML字符串到PDF的最短路径是三行Java代码:

:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/quickstart.java
import com.ironsoftware.ironpdf.*;
// Convert an HTML string directly to a PDF document
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
// Save to disk
pdf.saveAs("output.pdf");
JAVA

今天在您的项目中使用 IronPDF,免费试用。

第一步:
green arrow pointer

目录

如何将IronPDF添加到Java中的Maven项目中?

将IronPDF添加到Maven项目需要在项目的pom.xml依赖块中加入两个条目。 第一个引入了IronPDF库; 第二个添加SLF4J记录提供程序,以便IronPDF可以在执行期间记录引擎消息。

//:path=/static-assets/pdf/content-code-examples/tutorials/format-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/format-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

ironpdf构件引用了最新的IronPDF for Java版本和变更日志slf4j-simple依赖提供了一个基本的日志后端。 您可以根据需要将其替换为LogbackLog4J,或者完全省略以抑制日志输出。

添加完两个条目后,从项目根目录运行mvn install来下载构件。 Maven将在Maven Central上解析该依赖项。

提示查看Maven Central页面的com.ironsoftware:ironpdf以确认最新版本号,然后再将其添加到您的pom.xml中。

如何在Java中手动安装IronPDF JAR?

不使用Maven或其他依赖管理器的项目可以通过直接下载JAR并将其包含在classpath上来添加IronPDF。 导航到IronPDF for Java下载页面并下载胖-JAR文件。

胖-JAR捆绑了所有的依赖项,因此除了主要工件外不需要额外的classpath条目。 可选地下载SLF4J实现JAR以启用日志记录。

使用您的IDE库管理面板将两个JAR添加到项目的类路径,或者在终端中编译和运行时指定-classpath条目。

如何将IronPDF导入到我的Java源文件中?

com.ironsoftware.ironpdf包包含所有的转换和处理组件。 在调用IronPDF方法的每个Java文件的顶部放置以下导入语句。

:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/import-statement.java
// Import all IronPDF components
import com.ironsoftware.ironpdf.*;
JAVA

针对特定类命名的目标import也是有效的:import com.ironsoftware.ironpdf.PdfDocument;。 在探索期间通配符导入很方便。

如何在Java中设置IronPDF的许可证密钥?

IronPDF for Java在没有许可证密钥的情况下可以免费使用,但它会对所有生成或修改的PDF文档应用平铺的水印。 要移除水印,请在调用任何转换或操作方法之前提供有效的许可证密钥。

//:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/set-license-key.java
// Set the license key before any PDF operations
License.setLicenseKey("YOUR-LICENSE-KEY");
//:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/set-license-key.java
// Set the license key before any PDF operations
License.setLicenseKey("YOUR-LICENSE-KEY");
JAVA

PdfDocument方法调用之前。 购买许可证密钥开始免费试用以生成无水印的PDF。

IronPDF 许可页面,展示如何获取许可证密钥以移除生成 PDF 中的水印

有效的许可证密钥将移除生成的PDF上的平铺水印。可在IronPDF许可页面获取或请求免费试用。

设置日志文件位置(可选)

默认情况下,IronPDF将引擎消息写入应用程序根目录下名为IronPdfEngine.log的文件中。 要更改日志文件路径,在执行任何PDF操作之前调用Settings.setLogPath

:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/set-log-path.java
import java.nio.file.Paths;
// Redirect log output before using IronPDF
Settings.setLogPath(Paths.get("logs/ironpdf-engine.log"));
JAVA

请注意PdfDocument调用之前。 在转换开始后调用它对该会话没有影响。)]

如何将HTML字符串转换为Java中的PDF?

PdfDocument.renderHtmlAsPdf(String html)将任何有效的HTML标记转换为PDF文档。 该方法接受一个原始HTML字符串,并返回一个可以保存、合并或进一步修改的PdfDocument对象。

:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/html-string-to-pdf.java
// Convert a minimal HTML string to a PDF document
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
// Save the resulting document to disk
pdf.saveAs("html-string-output.pdf");
JAVA
IronPDF renderHtmlAsPdf 的 PDF 输出,显示从 HTML 字符串忠实渲染的 H1 标题

IronPDF直接将HTML标记渲染成像素精确的PDF。此处显示的输出是由上面的代码示例生成的。

渲染引擎基于Chromium,因此任何在Chrome中工作的HTML、CSS或JavaScript都将在PDF中正确渲染。 这包括Flexbox布局、CSS Grid、网络字体、SVG和JavaScript驱动的图表。

重载版本的方法接受第二个参数作为基路径:renderHtmlAsPdf(String html, String basePath)。 此基路径用于解析本地样式表、图像和脚本的相对引用。

:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/html-string-with-assets.java
// HTML referencing local stylesheet and image
String html = "<html><head><link rel='stylesheet' href='style.css'></head>"
    + "<body><img src='logo.png'/><h1>Invoice</h1></body></html>";
// Provide the folder containing style.css and logo.png as the base path
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html, "C:/invoices/");
pdf.saveAs("invoice-output.pdf");
JAVA

基路径可以指向本地文件系统上的目录或远程URL。 在渲染过程中,IronPDF从该位置获取引用的资产。

IronPDF renderHtmlAsPdf 输出,显示应用了样式表的整页文档,保留了 HTML 源中的 CSS 样式

提供基路径时,IronPDF解决本地CSS和图像引用,以生成完全样式化的PDF。

提示要使本地资产解析工作,所有引用的文件必须可以从基路径访问。 使用正斜杠的路径可在Windows和Linux上工作。)]

有关这种方法的集中视图,请参见HTML字符串到PDF的代码示例

如何将URL转换为Java中的PDF?

PdfDocument.renderUrlAsPdf(String url)获取给定URL的页面并在保存输出为PDF之前渲染完整的DOM(包括JavaScript执行)。

:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/url-to-pdf.java
// Render a live web page to PDF by URL
PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
// Save the rendered document
pdf.saveAs("wikipedia-pdf-article.pdf");
JAVA
IronPDF 从维基百科 PDF 词条页面生成的 PDF,显示保留的多栏布局和导航元素

IronPDF捕获网页的完整渲染状态,包括JavaScript生成的动态内容。

Chromium渲染引擎获取外部样式表、字体和JavaScript文件,因此生成的PDF准确地反映了页面的视觉状态。 此方法非常适合从网页仪表盘生成报告、存档公共网页内容或转换依赖于客户端渲染的数据可视化。

重要URL到PDF转换需要服务器运行IronPDF的出口HTTP/HTTPS访问。 在部署到生产环境之前确保网络策略允许此操作。)]

查看URL到PDF转换示例以获取其他选项,例如自定义请求头和身份验证。

如何将HTML文件转换为Java中的PDF?

PdfDocument.renderHtmlFileAsPdf(String filePath)从本地文件系统读取一个HTML文件并将其转换为PDF。 该方法会自动解析HTML文件中相对于文件目录的任何相对资产引用。

:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/html-file-to-pdf.java
// Convert a local HTML file (with a linked CSS file) to PDF
PdfDocument pdf = PdfDocument.renderHtmlFileAsPdf("C:/invoices/TestInvoice1.html");
// Save the resulting document
pdf.saveAs("invoice-from-file.pdf");
JAVA

该方法正确处理多文件HTML项目。 在上面的例子中,如果TestInvoice1.html链接到同一目录中的样式表,在渲染时IronPDF会应用该样式表。 结果是与源文件的浏览器呈现外观相匹配的PDF。

提示从服务器应用程序调用renderHtmlFileAsPdf时请使用绝对文件路径。 相对路径相对于JVM的工作目录解析,这可能与HTML文件的位置不同。)]

此方法特别适用于在磁盘上维护HTML模板的PDF生成工作流程:发票生成器、报告模板和表单输出系统是常见的使用案例。

如何在Java中设置PDF页面尺寸和方向?

页面大小和方向通过ChromePdfRenderOptions类来控制。 创建一个renderHtmlAsPdf调用。

:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/page-size-orientation.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;
// Create rendering options for the PDF
ChromePdfRenderOptions options = new ChromePdfRenderOptions();
// Set paper size to A4
options.setPaperSize(PaperSize.A4);
// Set to landscape orientation
options.setPaperOrientation(PaperOrientation.Landscape);
// Apply options to the conversion
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Landscape Report</h1>", options);
pdf.saveAs("landscape-a4-report.pdf");
JAVA

A5等标准选项。 Landscape

对于非标准尺寸,请使用setCustomPaperSizeInInches(double width, double height)

:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/custom-paper-size.java
ChromePdfRenderOptions options = new ChromePdfRenderOptions();
// Set a custom 100mm x 150mm page size
options.setCustomPaperSizeInMillimeters(100, 150);
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<p>Custom size card</p>", options);
pdf.saveAs("custom-size-card.pdf");
JAVA

请参阅自定义PDF纸张尺寸示例以获取完整的PaperSize常量和尺寸选项列表。

如何在Java中设置PDF的自定义边距?

边距大小同样通过ChromePdfRenderOptions设置。 库公开了顶部、底部、左侧和右侧边距的单独设置器,所有这些都接受以毫米为单位的值。

:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/custom-margins.java
ChromePdfRenderOptions options = new ChromePdfRenderOptions();
// Set all four margins in millimeters
options.setMarginTop(20);
options.setMarginBottom(20);
options.setMarginLeft(15);
options.setMarginRight(15);
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(
    "<p>Document with custom margins</p>", options);
pdf.saveAs("custom-margins.pdf");
JAVA

将所有边距设置为零会完全去除空白,对于全出血设计(如标签、证书或图形布局)非常有用。

请注意IronPDF边距值以毫米为单位。 值为0时可禁用对应边的边距。 请注意,打印机驱动程序的边距与IronPDF边距是分开的,因此当打印时,填满页面边到边的内容可能仍会被剪切。)]

欲了解可用代码示例,请访问自定义边距示例

Icon Quote related to 如何在Java中设置PDF的自定义边距?

我最喜欢的这种库是 IronPDF。它允许快速高效地操作 PDF 文件。它还具有许多有价值的功能,比如导出为 PDF/A 格式和数字签名 PDF 文档。

Milan Jovanovic related to 如何在Java中设置PDF的自定义边距?

Milan Jovanovic

微软MVP

查看案例研究
Icon Quote related to 如何在Java中设置PDF的自定义边距?

IronOCR 意味着我们每年可以节省 $40,000 的人工处理成本,同时提高生产力,并释放资源用于高影响任务。我强烈推荐它。

Brent Matzelle related to 如何在Java中设置PDF的自定义边距?

Brent Matzelle

首席技术官,OPYN

查看案例研究
Icon Quote related to 如何在Java中设置PDF的自定义边距?

Iron Suite 在我们的运营中起着至关重要的作用。这些工具提高了业务各方面的效率,包括创建平面图和改善库存管理。

David Jones related to 如何在Java中设置PDF的自定义边距?

David Jones

首席软件工程师,Agorus Build

查看案例研究

如何在Java中向PDF添加页眉和页脚?

IronPDF支持两种类型的页眉和页脚:基于文本的(HtmlHeaderFooter)。 文本页眉配置快捷; HTML页眉支持完整样式和图像。

添加文本页眉和页脚

:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/text-header-footer.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.headerfooter.*;
import com.ironsoftware.ironpdf.render.*;
ChromePdfRenderOptions options = new ChromePdfRenderOptions();
// Configure a text-based header
TextHeaderFooter header = new TextHeaderFooter();
// Use merge fields: {page}, {total-pages}, {date}, {time}, {url}, {html-title}
header.setCenterText("Report Title");
header.setRightText("Page {page} of {total-pages}");
options.setTextHeader(header);
// Configure a text-based footer
TextHeaderFooter footer = new TextHeaderFooter();
footer.setLeftText("Confidential");
footer.setCenterText("{date}");
options.setTextFooter(footer);
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(
    "<h1>Annual Report</h1><p>Content here.</p>", options);
pdf.saveAs("report-with-headers.pdf");
JAVA

{html-title}合并字段在渲染时被特定文档的值替换。

添加HTML页眉

对于需要徽标、品牌颜色或复杂布局的页眉,请使用HtmlHeaderFooter

:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/html-header.java
import com.ironsoftware.ironpdf.headerfooter.*;
HtmlHeaderFooter header = new HtmlHeaderFooter();
header.setHtmlFragment(
    "<div style='background:#003366;color:white;padding:8px;font-family:Arial;'>"
    + "<img src='/images/logo.png' style='height:30px;float:left;'/>"
    + "<span style='line-height:30px;margin-left:10px;'>Company Report</span>"
    + "</div>"
);
ChromePdfRenderOptions options = new ChromePdfRenderOptions();
options.setHtmlHeader(header);
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(
    "<h1>Q3 Results</h1>", options);
pdf.saveAs("report-with-html-header.pdf");
JAVA

提示HTML页眉片段在它们自己的页面上下文中呈现。 外部图像路径必须是绝对URL或可以从运行IronPDF的服务器访问的路径。)]

请参阅页眉和页脚代码示例以获取额外的合并字段选项和多页行为。

如何在Java中应用水印到PDF上?

IronPDF通过将HTML内容打印到现有PDF页面上来应用水印。 这种方法提供了对定位、透明度和样式的全面控制。

:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/watermark.java
import com.ironsoftware.ironpdf.*;
// Create the base PDF
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Confidential Report</h1>");
// Apply a diagonal text watermark using HTML stamping
String watermarkHtml =
    "<div style='position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-45deg);"
    + "font-size:80px;color:rgba(200,0,0,0.15);font-family:Arial;font-weight:bold;"
    + "white-space:nowrap;pointer-events:none;'>CONFIDENTIAL</div>";
pdf.applyStamp(watermarkHtml);
pdf.saveAs("watermarked-report.pdf");
JAVA

applyStamp方法接受标准的HTML/CSS。 为文本使用半透明的rgba颜色,确保水印可见又不遮挡下面的文档内容。

有关基于图像的水印或应用于特定页面范围的水印,请参阅定制水印Java指南

如何在Java中压缩PDF文件?

对于包含图像的PDF文件,IronPDF可以通过将嵌入图像重新采样为更低分辨率来减少文件大小。 在现有compressImages

:path=/static-assets/pdf/content-code-examples/tutorials/format-pdfs/compress-pdf.java
// Load an existing PDF or use one created by IronPDF
PdfDocument pdf = PdfDocument.fromFile(Paths.get("large-report.pdf"));
// Reduce image quality to 60% (value range: 1–100)
pdf.compressImages(60);
// Save the compressed document
pdf.saveAs("compressed-report.pdf");
JAVA

质量参数是1到100之间的整数,其中100保留完整图像质量,较低的值通过降低图像保真度来减小文件大小。 60到80的值为大多数业务文档提供了大小和视觉质量之间的实用平衡。

警告图像压缩是不可逆的。原始图像数据无法从压缩的PDF中恢复。 如果以后可能需要原始质量,请始终保留源文件。)]

有关图像质量阈值的更多详情,请参阅PDF压缩示例

下一步

本教程涵盖了三种HTML到PDF的转换方法(字符串、URL和文件)以及页面尺寸、边距、页眉、页脚、水印和压缩。 这些是用于Java服务器应用程序的最常见PDF格式操作。

要进一步了解IronPDF for Java:

开始免费试用以生成无水印的PDF,或查看许可选项以将IronPDF添加到生产项目中。


教程快速访问

IronPDF for Java IntelliJ项目下载

下载本教程的 Java 源代码

本教程的完整HTML到PDF Java源代码可以免费下载为压缩的IntelliJ项目。

下载

在 GitHub 上探索此教程

此项目的源代码作为IntelliJ IDEA项目可用,并且可以导入到Eclipse或其他Java IDE中。

IronPDF for Java格式PDF示例
IronPDF Java教程源代码的GitHub代码库
IronPDF Java API参考文档

查看 API 参考

探索IronPDF for Java的API参考,涵盖com.ironsoftware.ironpdf包中所有类、方法、字段和枚举的详细信息。

查看IronPDF Java API参考

常见问题解答

如何在Java中将HTML字符串转换为PDF?

使用IronPDF for Java库的PdfDocument.renderHtmlAsPdf(String html)。将HTML标记作为字符串参数传递,然后在返回的PdfDocument对象上调用saveAs将文件写入磁盘。

如何将IronPDF添加到Maven项目中?

com.ironsoftware:ironpdf制品添加到<dependencies>部分的pom.xml文件中。还添加一个SLF4J实现,如org.slf4j:slf4j-simple以启用日志记录。运行mvn install以下载这两个制品。

如何设置IronPDF for Java生成的PDF页面大小?

创建一个ChromePdfRenderOptions对象并调用setPaperSize(PaperSize.A4)(或者其他常量)。将选项对象作为第二个参数传递给renderHtmlAsPdf。对于非标准尺寸,使用setCustomPaperSizeInMillimeters

如何在Java中为PDF添加页眉和页脚?

对于纯文本页眉和页脚使用TextHeaderFooter,对于完全样式化的HTML内容使用HtmlHeaderFooter。用文本或HTML配置对象,使用setTextHeadersetHtmlHeader将其设置在ChromePdfRenderOptions实例上,并将选项传递给渲染方法。

如何使用IronPDF for Java将水印应用到PDF上?

在现有PdfDocument上调用applyStamp(String htmlFragment)。传递定义水印外观的HTML字符串,使用CSSposition:absolutetransform:rotate和半透明的rgba颜色来覆盖文本而不遮挡下面的内容。

IronPDF for Java能将网页转换为PDF吗?

是的。调用 PdfDocument.renderUrlAsPdf(String url) 并传入页面 URL。IronPDF 使用 Chromium 渲染引擎来获取并执行页面,包括 JavaScript,然后生成 PDF 输出。

如何去除 IronPDF 生成的 PDF 上的水印?

在执行任何 PDF 操作之前调用 License.setLicenseKey("YOUR-LICENSE-KEY")。没有有效的许可证密钥会在生成的 PDF 上应用水印。您可以在 ironpdf.com/java/licensing/ 获得许可证或免费试用密钥。

如何用 IronPDF for Java 压缩 PDF 文件?

using PdfDocument.fromFile 加载 PDF,然后调用 compressImages(int quality),值的范围是 1 到 100。较低的值通过以较低分辨率重新取样嵌入图像来减少文件大小。调用 saveAs 来保存压缩后的文件。

IronPDF for Java 是否支持自定义页面边距?

是的。使用 ChromePdfRenderOptions 并调用 setMarginTopsetMarginBottomsetMarginLeftsetMarginRight,单位为毫米。在渲染方法中传入这些选项以应用边距。

IronPDF 支持哪些 Java 版本?

IronPDF for Java 支持 Java 8 及更高版本。该库可作为 Maven 工件下载,名称为 com.ironsoftware:ironpdf,或从 ironpdf.com/java/ 下载独立的 fat-JAR。

Darrius Serrant
全栈软件工程师(WebOps)

Darrius Serrant 拥有迈阿密大学的计算机科学学士学位,目前在 Iron Software 担任全栈 WebOps 市场工程师。从小就被编码吸引,他认为计算机既神秘又易于接触,使其成为创意和问题解决的理想媒介。

在 Iron Software,Darrius 喜欢创造新事物,并简化复杂概念以使其更易理解。作为我们常驻的开发者之一,他还自愿教授学生,与下一代分享他的专业知识。

对于 Darrius 来说,他的工作令人满意,因为它被重视并产生真正的影响。

准备开始了吗?
版本: 2026.6 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据?
运行示例看着你的HTML代码变成PDF文件。