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

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

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

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

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

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

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

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

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

 

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

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

## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#install-ironpdf-java-library)安装 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 存储库](https://central.sonatype.com/artifact/com.ironsoftware/ironpdf/2023.1.1)自动安装到我们的应用程序中。

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

## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#create-pdf-file-from-html-string)从 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 语句用于处理任何运行时异常。这只是在处理文件或数据库时使用的最佳做法。

## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#output)输出:

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

![jumlqibo2pd3jxuisewv.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0c2ac0930c364773b9b0623d4a384435~tplv-k3u1fbpfcp-watermark.image?)
我们已将 HTML 内容分配给一个字符串变量。由 IronPDF 库的 PdfDocument 类提供的 renderHtmlAsPdf() 函数将字符串作为参数,并将 html 内容转换为 pdf 文档实例。saveAs() 函数将位置路径作为参数,并将该 pdf 文档实例保存到我们提供的目录中。

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

## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#output)输出:

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

 


以下是示例代码片段:
```
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()函数保存到本地驱动器中。

## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#output)输出:

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

 


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

## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#convert-html-files-into-a-pdf-document)将 HTML 文件转换为 PDF 文档:

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

'

 

 



我们可以看到示例 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);
        }
    }
```
上一示例中已提供代码说明。我们只是改变了路径,其余的都是一样的。

## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#output)输出:

以下是生成的 pdf:



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

 

 

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

## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#convert-url-to-pdf-document)将网址转换为 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()函数保存到本地驱动器中。

## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#output)输出:

以下是生成的 pdf:

k3u1fbpfcp/6cef5cb195894f19bc30d6b8585a5bb9~tplv-k3u1fbpfcp-watermark.image?)


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

 

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

## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#add-watermark)添加水印:

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

## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#add-header-and-footer)添加页眉和页脚:

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

## [](https://dev.to/mhamzap10/java-generate-pdf-from-html-without-losing-formatting-2dam#add-footer)添加页脚:

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

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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐