Knowledgebase

使用 Java 将 HTML 生成 PDF(分步指南)

本文将向您展示如何使用 Java 将 HTML 生成 PDF。您可以轻松操作并渲染包含 CSS 样式的 HTML 文档。

Aspose.HTML for Java 使您的应用程序能够执行广泛的 HTML 操作任务,并支持 HTML5、CSS3、SVG 和 HTML Canvas 功能。通过我们的 API,您可以加载网页、分析、编辑内容,并保存和转换页面。
您可以操作的常见格式包括:XHTML、MHTML、SVG、MD、PDF、XPS、EPUB、PNG、TIFF、JPEG、BMP 等。

PDF from HTML in Java

丰富的功能集

Aspose.HTML for Java 在多个领域为您提供大量功能:

• 文档对象模型(DOM)——允许您编辑、创建和删除节点,且遵循官方 HTML 文档规范。
• 高性能转换器。有关受支持文件格式的更多信息,请访问功能列表转换 文章。
• 处理 CSS、JavaScript 以及其他内置格式。

使用单行 Java 代码生成 PDF(HTML 转 PDF)

您只需使用 Converter 类的静态方法,即可在 Java 应用程序中通过一行代码轻松将 HTML 生成 PDF。

// 调用 ConvertHTML 方法将 HTML 转换为 PDF。
com.aspose.html.converters.Converter.convertHTML(
        "<span>Hello World!!</span>",
        ".",
        new com.aspose.html.saving.PdfSaveOptions(),
        "output.pdf"
);

使用 Java 按行生成 PDF(HTML 转 PDF)

以下是按行将 HTML 生成 PDF 的步骤:

  1. 使用 HtmlDocument 类首先加载 HTML 文件。
  2. 然后创建 PdfSaveOptions 的实例。
  3. 使用 Converter 类的 ConvertHTML() 方法将 HTML 保存为 PDF 文件。您需要将 HTMLDocumentPdfSaveOptions 和输出文件路径传递给 ConvertHTML() 方法,以生成 PDF。
// 准备 HTML 代码并保存到文件。
String code = "<span>Hello World!!</span>";
try (java.io.FileWriter fileWriter = new java.io.FileWriter("document.html")) {
    fileWriter.write(code);
}

// 从文件初始化 HTML 文档
com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument("document.html");
try {
    // 初始化 PdfSaveOptions
    com.aspose.html.saving.PdfSaveOptions options = new com.aspose.html.saving.PdfSaveOptions();

    // 将 HTML 转换为 PDF
    com.aspose.html.converters.Converter.convertHTML(
            document,
            options,
            "output.pdf"
    );
} finally {
    if (document != null) {
        document.dispose();
    }
}

使用 Save 选项自定义渲染过程

您可以使用 PdfSaveOptions 自定义渲染过程,并指定页面大小文件权限边距CSS 媒体类型 等等。在下面的示例中,您可以看到如何使用 PdfSaveOptions 创建具有自定义页面大小和背景颜色的 PDF 文件:

// 准备 HTML 代码并保存到文件
String code = "<span>Hello</span> <span>World!!</span>";
try (java.io.FileWriter fileWriter = new java.io.FileWriter("document.html")) {
    fileWriter.write(code);
}

// 将 A5 设置为页面大小并将背景颜色改为绿色
com.aspose.html.saving.PdfSaveOptions options = new com.aspose.html.saving.PdfSaveOptions();
com.aspose.html.rendering.PageSetup pageSetup = new com.aspose.html.rendering.PageSetup();
com.aspose.html.drawing.Page anyPage = new com.aspose.html.drawing.Page();
anyPage.setSize(
        new com.aspose.html.drawing.Size(
                com.aspose.html.drawing.Length.fromInches(8.3f),
                com.aspose.html.drawing.Length.fromInches(5.8f)
        )
);
pageSetup.setAnyPage(anyPage);
options.setPageSetup(pageSetup);

options.setBackgroundColor(com.aspose.html.drawing.Color.getGreen());

// 将 HTML 文档转换为 PDF
com.aspose.html.converters.Converter.convertHTML(
        "document.html",
        options,
        "output.pdf"
);

微调转换器 文章中,您可以了解更多关于 PdfSaveOptions 的信息。

输出流提供程序

如果您想将文件保存到远程存储(如云或数据库),可以实现 MemoryStreamProvider 接口。MemoryStreamProvider 接口被设计为回调对象,用于在渲染页面或文档后创建流并释放早期创建的流。

下面展示了使用 MemoryStreamProvider 的示例:

package com.aspose.html.examples.java;

// 完整示例和数据文件,请访问 https://github.com/aspose-html/Aspose.HTML-for-Java
public class MemoryStreamProvider implements java.io.Closeable {
    // 在文档渲染期间创建的 InputStream 对象列表
    public java.util.List<java.io.InputStream> lStream = new java.util.ArrayList<>();

    @Override
    public void close() throws java.io.IOException {
        for (java.io.InputStream stream : lStream) {
            stream.close();
        }
    }
}
// 创建 MemoryStreamProvider 实例
try (MemoryStreamProvider streamProvider = new MemoryStreamProvider()) {
    // 初始化 HTML 文档
    com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument("<span>Hello World!!</span>", ".");
    try {
        // 使用 MemoryStreamProvider 将 HTML 转换为 PDF
        com.aspose.html.converters.Converter.convertHTML(
                document,
                new com.aspose.html.saving.PdfSaveOptions(),
                streamProvider.lStream
        );

        // 获取包含结果数据的内存流
        java.io.InputStream inputStream = streamProvider.lStream.stream().findFirst().get();

        // 将结果数据写入输出文件
        try (java.io.FileOutputStream fileOutputStream = new java.io.FileOutputStream("output.pdf")) {
            byte[] buffer = new byte[inputStream.available()];
            inputStream.read(buffer);
            fileOutputStream.write(buffer);
        }
    } finally {
        if (document != null) {
            document.dispose();
        }
    }
}

Aspose 为其所有产品提供技术支持,包括知识库文章文档博客代码示例演示 ,以及免费支持 和高度可用的付费支持 。如果您需要专家与您合作并帮助您根据需求实现 Aspose.HTML for Java,最佳方案是我们的付费咨询