HTML 转 PDF 在 Java 中

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

本教程指导Java开发者如何使用IronPDF库将HTML内容转换成像素完美的PDF。(可移植文件格式)文件。

IronPDF是一个功能齐全的PDF转换器和PDF处理库。 IronPDF 可用于两者.NETJava编程语言。 本教程涵盖了库用于转换HTML内容的使用方法。(文件、标记等)在Java应用程序中。 在 .NET 应用程序中将 HTML 转换为 PDF 的教程可以使用。这里.


概述


入门

1. 安装 IronPDF PDF 库用于 Java

Java Maven 库用于 PDF

安装使用 Maven

<dependency>
   <groupId>com.ironsoftware</groupId>
   <artifactId>ironpdf</artifactId>
   <version>2024.9.1</version>
</dependency>
Java PDF JAR

下载 JAR

  下载JAR

手动安装到你的项目中

有两种方法可以整合IronPDFJava项目中的库:

  1. 将 IronPDF 添加为 Maven 配置的 Java 项目中的依赖项
  2. 下载IronPDF JAR文件并手动添加到项目类路径中。

    以下部分将简要介绍两种安装方法。

选项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.*;
JAVA

2.2. 设置许可证密钥(可选)

IronPDF for Java 免费使用。 然而,对于免费用户,它会在PDF文档上添加带有平铺背景的水印。(如下图所示).

在 ironpdf.com/java/licensing/ 获取许可证密钥,即可转换和处理无水印的 PDF 文档。

要使用 IronPDF 生成没有水印的 PDF,库必须使用有效的许可密钥。 下面的代码行用于配置库的许可密钥。

// Apply your license key
License.setLicenseKey("YOUR-LICENSE-KEY");
JAVA

在生成 PDF 文件或自定义文件内容之前,应设置许可密钥。 我们建议您在所有其他代码行之前调用 setLicenseKey 方法。

购买许可证密钥或联系我们获取免费试用版许可证密钥.

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

默认情况下(并假设已安装 SLF4J 提供程序)IronPDF会将日志消息生成到位于Java应用程序根目录中的名为IronPdfEngine.log的文本文件中。

要指定日志文件的不同名称和位置,请使用 Settings.setLogPath 方法:

// Set a log path
Settings.setLogPath(Paths.get("IronPdfEngine.log"));
JAVA

*请注意****:在使用任何 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");
JAVA

使用以下工具将 HTML 标记转换为 PDF 文件 PdfDocument.renderHtmlAsPdf.该方法可使用所有符合 W3C 标准的有效 HTML 和 CSS 标记生成 PDF 文档。

renderHtmlAsPdf 以与现代、符合标准的浏览器相同的方式处理所有 HTML、CSS 和 JavaScript 内容。 这有助于软件工程师创建PDF文档,使其外观与网页浏览器中显示的完全一致。

renderHtmlAsPdf方法可以引用位于计算机或网络驱动器上的文件夹中的图像、样式表和脚本。下一个示例从引用位于assets文件夹中的CSS文件和图像的HTML生成PDF文档:

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

上述代码的结果如下图所示。

PdfDocument.renderHtmlAsPdf 可以呈现各种富媒体元素。如果在 Chrome 浏览器中显示,那么 renderHtmlAsPdf 将其呈现出来!

第二个(可选的)renderHtmlAsPdf 的参数允许开发者指定一个基础路径,用于引用网络资源。 此路径可以是本地文件系统上的目录,甚至是一个URL路径。

了解 renderHtmlAsPdf 方法此代码示例或在API文档页码

2.5. 从网址创建PDF

开发者可以使用IronPDF的PdfDocument.renderUrlAsPdf方法将在线网页转换为PDF文档。

下一个示例将维基百科文章渲染成PDF内容。

PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.saveAs("url_to_pdf.pdf");
JAVA

生成的 PDF 文件格式如下所示。

IronPDF java 库可以转换在线托管网页中包含的 HTML 内容。使用 PdfDocument.renderUrlAsPdf 方法来实现。

了解有关将网页转换为 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

假设 HTML 文件已与 CSS 文件和 JavaScript 文件一起保存到名为 invoices 的文件夹中。 我们可以使用 IronPDF 对 HTML 文件进行如下转换:

PdfDocument pdf = PdfDocument.renderHtmlFileAsPdf("C:/invoices/TestInvoice1.html");
pdf.saveAs("htmlfile_to_pdf.pdf");
JAVA

与HTML字符串转换为PDF的示例一样,IronPDF能正确解析HTML文档中的任何相对URL,将它们转换为文件系统上的正确路径。 因此,这个示例生成的PDF文件能够完美地捕捉到任何引用的样式表和脚本通常对网页的视觉影响。

3. 进一步阅读

我们只是触及了IronPDF将HTML渲染为PDF功能的冰山一角。

深入了解如何使用Java开发中的HTML到PDF转换器,参考我们精选的代码示例。代码示例节。

  1. 读取此代码示例在转换过程中学习如何自定义PDF文档的外观。
  2. 生成PDF文件自定义页眉和页脚, 边距大小, 页面尺寸, Watermark以及更多。
  3. 提取 PDF 内容(文本图像)从文件中、优化文件大小以编程方式打印 PDF

    Study theIronPDF Java API 参考PDFDocument` 类上的 "PDFDocument "页面,以获得对渲染 HTML 到 PDF 的更大控制。

观看 HTML 转 PDF 教程视频


教程快速访问

下载本教程的 Java 源代码

本教程的 HTML 转 PDF Java 源代码全文可作为压缩的 IntelliJ 项目免费下载。

下载

在 GitHub 上探索此教程

该项目的源代码可在 GitHub 上获取。

使用此代码,只需几分钟就能轻松上手并运行。该项目保存为 IntellJ IDEA 项目,但也可导入其他流行的 Java IDE。

Java HTML 转 PDF

查看应用程序接口参考

探索 IronPDF 的 API 参考,其中概述了 IronPDF 的所有功能、命名空间、类、方法字段和枚举的详细信息。

查看应用程序接口参考