Java HTML生成PDF(格式不变)

4,864 阅读5分钟

Java是大规模和企业级应用程序最常用的编程语言之一。PDF 格式代表可移植文档格式,为人们提供了一种简单、可靠的方式来呈现和交换文档 - 无论查看文档的任何人使用何种软件、硬件或操作系统。因此,pdf 是一种广泛使用的格式,用于在软件应用程序中生成文档。

HTML 用于表示 Web 浏览器中的信息。因此,应用程序的每个信息、报告、发票或网页都是 HTML 格式的。因此,我们需要学习从HTML生成pdf文件。在本教程中,我们将学习将 HTML 文件转换为 pdf 文件。

我们需要一个第三方库来将 HTML 文件转换为 pdf 文件。有多个库可用,其优点和缺点。其中一些是付费的,有些没有提供足够的功能,其中一些不能以 100% 的准确性转换 HTML 文件,其中一些存在性能问题。

我发现IronPDF java库非常适合此目的,因为它可以免费开发,更安全,在单个库中提供100%精度的所有功能,并且具有出色的性能。

在继续之前,让我们简要介绍一下 IronPDF。

IronPDF:

IronPDF是由IronSoftware开发的最流行的Java PDF库,用于创建和编辑PDF。其简单的API使开发人员能够在各种Java项目中从HTML创建专业,高质量的PDF,包括Scala和Kotlin。IronPDF通过gRPC与IronPdfEngine通信。

主要功能包括使用HTML,HTTP,JavaScript,CSS和各种图像格式创建PDF文档。我们还可以添加页眉和页脚、签名、附件、密码和安全性。它提供了完整的多线程支持,而且数量更多!

现在我们将开始代码示例。

首先,我们需要创建一个新的 maven 项目

8aoi8fv4ig7l4koyxhvg.png

命名项目,选择位置,选择语言,生成系统和JDK。点击创建按钮。将创建一个新项目。

现在,我们将在我们的Java应用程序中安装IronPDF。

安装 IronPDF Java 库

我们需要将 IronPDF 定义为 pom.xml 文件中的依赖项,以便在我们的应用程序中安装此库。打开 pom.xml 文件并在该文件中添加以下 XML。

 <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>2023.1.1</version>
    </dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>2.0.3</version>
</dependency>

现在,生成项目。该库将从 maven 存储库自动安装到我们的应用程序中。

用 HTML 创建 pdf 文件的示例开始。

从 HTML 字符串创建 PDF 文件:

请参考以下示例:

 String htmlString = "<h1>My First PDF File<h1/><p> This is sample pdf file</p>";
        PdfDocument myPdf = PdfDocument.renderHtmlAsPdf(htmlString);

// Save the PdfDocument to a file
        try {
            myPdf.saveAs(Paths.get("myPDF.pdf") );
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

我们已将 HTML 内容分配给一个字符串变量。由 IronPDF 库的 PdfDocument 类提供的 renderHtmlAsPdf() 函数将字符串作为参数,并将 html 内容转换为 pdf 文档实例。saveAs() 函数将位置路径作为参数,并将该 pdf 文档实例保存到我们提供的目录中。

try-and-catch 语句用于处理任何运行时异常。这只是在处理文件或数据库时使用的最佳做法。

输出:

以下是上述代码生成的 pdf。

jumlqibo2pd3jxuisewv.png 我们已将 HTML 内容分配给一个字符串变量。由 IronPDF 库的 PdfDocument 类提供的 renderHtmlAsPdf() 函数将字符串作为参数,并将 html 内容转换为 pdf 文档实例。saveAs() 函数将位置路径作为参数,并将该 pdf 文档实例保存到我们提供的目录中。

try-and-catch 语句用于处理任何运行时异常。这只是在处理文件或数据库时使用的最佳做法。

输出:

以下是上述代码生成的 pdf。

z4mqamap4iug15scp2sd.png 以下是示例代码片段:

PdfDocument myPdf = PdfDocument.renderHtmlFileAsPdf("myFile.html");

// Save the PdfDocument to a file
        try {
            myPdf.saveAs("myPDF.pdf");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

renderHtmlFileAsPdf() 将 HTML 文件路径作为参数,并将给定的 HTML 文件转换为 pdf 文档。稍后,此pdf文档将使用saveAs()函数保存到本地驱动器中。

输出:

以下是我们的程序生成的pdf文档。

keusdq3y8n2co88belif.png 现在,我们将使用一个包含CSS和Javascript的大型HTML文档。我们将观察它在将 html 转换为 pdf 时保持的准确性和设计。

将 HTML 文件转换为 PDF 文档:

我将使用以下示例 HTML 页面,其中包含图像、动画、样式、jQuery 和引导程序。

8q46k0ih2c80c1r8114i.jfif

cpyybvx0y3xyay8ncl94.png 我们可以看到示例 HTML 文档具有图像和复杂的样式。我们将此HTML文件转换为PDF文档,并观察样式和内容的准确性。

我们将使用与上面示例中使用的相同代码行。

PdfDocument myPdf = PdfDocument.renderHtmlFileAsPdf("index.html");

// Save the PdfDocument to a file
        try {
            myPdf.saveAs("myPDF.pdf");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

上一示例中已提供代码说明。我们只是改变了路径,其余的都是一样的。

输出:

以下是生成的 pdf:

zb1yetxjnswsbzvqp4th.jfif 我们可以看到,使用IronPDF生成pdf非常容易。pdf 内容和样式与源文档相同。

我们还可以使用 URL 生成 pdf 文件。

将网址转换为 PDF 文档:

以下代码示例将从 URL 生成 pdf 文件。

 PdfDocument myPdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");


// Save the PdfDocument to a file
        try {
            myPdf.saveAs("myPDF.pdf");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

renderUrlAsPdf() 将 URL 作为参数,并将该 URL 转换为 pdf 文档。稍后,此pdf文档将使用saveAs()函数保存到本地驱动器中。

输出:

以下是生成的 pdf:

d11u0krqmfeo1a3cdrxj.png 我们还可以添加水印、页眉、页脚、数字签名等等。

让我们将自定义水印、页眉和页脚添加到生成的 pdf 中。

添加水印:

以下代码会将水印添加到我们的 pdf 文件中。
myPdf.applyWatermark("My Custom Watermark");

添加页眉和页脚:

myPdf.addHtmlHeader(new HtmlHeaderFooter("my Header"));

添加页脚:

myPdf.addHtmlFooter(new HtmlHeaderFooter("my Header"));

同样,我们可以添加前景、复制 pdf、合并 pdf 等等。