用 Java 将 HTML 转换为 PDF
本教程指导 Java 开发人员如何使用 IronPDF 库将 HTML 内容转换为像素完美的 PDF (可移植文件格式) 文件.
IronPDF 是一款功能齐全的 PDF 转换器和 PDF 处理库。IronPDF 可用于 .NET 和 Java 编程语言。本教程介绍如何使用该库转换 HTML 内容 (文件、标记等) 在 Java 应用程序中。在 .NET 应用程序中将 HTML 转换为 PDF 的教程如下所示 这里.
概述
如何用 Java 将 HTML 转换为 PDF
- 安装 Java 库,将 HTML 转换为 PDF
- 使用以下工具将 HTML 字符串转换为 PDF 文档
renderHtmlAsPdf
方法 - 用 Java 从网站 URL 生成 PDF 文件
- 将 HTML 文件转换为 PDF 文件
renderHtmlFileAsPdf
方法 - 将生成的 PDF 保存为新文件
入门
1. 安装IronPDF PDF库(用于Java)
有两种方法将 IronPDF Java 项目中的库:
1.在 Maven 配置的 Java 项目中将 IronPDF 添加为依赖项
2.下载 IronPDF JAR 文件并手动将其添加到项目 classpath 中。
下文将简要介绍这两种安装方法。
选项 1:将 IronPDF 作为 Maven 依赖项安装
要在使用 Maven 的 Java 项目中安装 IronPDF,请将以下工件添加到 Java 项目 pom.xml 文件的依赖部分。
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>com.ironsoftware</artifactId>
<version>2024.9.1</version>
</dependency>
第一个人工制品引用了 最新版本 的 IronPDF 库。第二个工件引用了 SL4J 执行。IronPDF 的渲染引擎在执行过程中生成日志信息时需要该依赖项。软件工程师可将此依赖关系替换为其他日志提供程序 (例如 日志框架 和 Log4J)如果他们不需要或不希望伐木,也可以完全省略。
在 Java 项目根目录下的终端中运行 mvn install
命令,下载前面提到的库。
选项 2:手动安装 IronPDF JAR
不使用 Maven 或任何其他依赖关系管理系统的开发人员需要 !!--inline-anchor_ironpdfjava-fatjar。 {下载 IronPDF 库 JAR 文件}--!! (和可选的 SL4J 执行) 并手动将其添加到项目的类路径中。
直接从以下网址下载 IronPDF JAR 文件 这里 (或从 Maven 仓库).
操作指南和代码示例
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
方法。
购买许可证密钥 或联系我们 获取免费试用版许可证密钥.
2.3 设置日志文件位置 (可选的)
默认情况下 (并假设已安装 SLF4J 提供程序)IronPDF 会将日志信息发送到 Java 应用程序根目录下名为 IronPdfEngine.log 的文本文件中。
要为日志文件指定不同的名称和位置,请使用 Settings.setLogPath
方法:
// Set a log path
Settings.setLogPath(Paths.get("IronPdfEngine.log"));
*请注意****:在使用任何 PDF 转换和处理方法之前,必须调用 Settings.setLogPath
。
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 "方法可以引用位于计算机或网络驱动器文件夹中的图像、样式表和脚本。下一个示例将从 HTML 生成 PDF 文档,该文档引用了位于assets
文件夹中的 CSS 文件和图像:
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");
上述代码的结果如下图所示。
第二个 (可选的) 参数允许开发人员指定引用网络资产的基本路径。该路径可以是本地文件系统中的一个目录,甚至可以是一个 URL 路径。
了解有关 renderHtmlAsPdf
方法的更多信息,请查阅 此代码示例或在 API文档 页码
2.5.从 URL 创建 PDF
开发人员可以使用 IronPDF 的 PdfDocument.renderUrlAsPdf
方法将在线网页转换为 PDF 文档。
下一个示例将维基百科文章渲染为 PDF 内容。
PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.saveAs("url_to_pdf.pdf");
生成的 PDF 文件格式如下所示。
了解有关将网页转换为 PDF 内容的更多信息,请查阅 代码示例.
2.6.从 HTML 文件创建 PDF
IronPDF 还能将存储在本地文件系统中的 HTML 文档直接渲染为等效的 PDF 格式。
下一个代码示例使用 本发票 作为 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 的渲染能力只是浅尝辄止。
请使用我们的 代码示例 节。
1.阅读 此代码示例 了解如何在转换过程中自定义 PDF 文档的外观。
2.生成 PDF 文件 自定义页眉和页脚, 边距大小, 页面尺寸, 水印等等。
3.提取 PDF 内容 (文本 和 图像) 从文件中、 优化文件大小和 以编程方式打印 PDF
研究 IronPDF Java API 参考 PDFDocument` 类上的 "PDFDocument "页面,以获得对渲染 HTML 到 PDF 的更大控制。
观看 HTML 转 PDF 视频教程
教程快速访问
在 GitHub 上探索此教程
该项目的源代码可在 GitHub 上获取。
使用此代码,只需几分钟就能轻松上手并运行。该项目保存为 IntellJ IDEA 项目,但也可导入其他流行的 Java IDE。
Java HTML 转 PDF