使用 Java 将 PNG 转换为 PDF

使用 Java 将 PNG 转换为 PDF

PNGPDF 是当前流行且使用最广泛的文件格式。 PNG 是一种图像文件格式,而 PDF(便携式文档格式)提供可靠和高效的数据表示。在某些情况下,您需要将图像文件格式转换为 PDF。因此,在这篇博文中,我们将学习如何使用 Java PDF API 将 PNG 转换为 PDF。我们将编写代码片段和在 Java 应用程序中执行此转换的步骤。

我们将在本文中介绍以下主题:

Java PDF 库

这个 Java PDF 库 易于安装,并提供有关 安装 的文档。它是一个企业级 API,提供强大的转换和操作功能。但是,您可以 下载 JAR 或使用以下 Maven 配置安装它:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>21.11</version>
    <type>pom</type>
</dependency>

使用 Java 将 PNG 转换为 PDF

我们将使用这个 Java PDF 库公开的类和方法。它允许您通过在 Java 中编写几行源代码来执行 PNG 到 PDF 的转换。

您可以按照下面提到的步骤和代码段进行操作:

  1. 实例化 Document 类的实例。
  2. 创建一个 DocumentBuilder 类的对象,使向文档中添加内容变得简单。
  3. 调用createImageInputStream方法加载输入图像文件,并赋值给ImageInputStream的对象。
  4. 调用 getImageReaders 方法,该方法返回一个包含所有当前注册的 ImageReader 的 Iterator 并将其分配给 ImageReader 类的对象。
  5. 调用将要使用的输入源设置为给定 ImageInputStream 的 setInput 方法。
  6. 通过调用 getNumImages 方法获取图像中的帧数。
  7. 循环遍历所有帧。
  8. 选择一个活动帧并将其分配给 BufferedImage 类的对象。
  9. 调用 getPageSetup 方法访问当前页面设置并将其分配给 PageSetup 类的对象。 10.调用setPageWidth方法设置页面高度。 11.调用setPageHeight方法设置页面宽度。
  10. 调用insertImage方法将图片插入到文档中,定位在页面的左上角。
  11. 调用save方法将文件保存为PDF文件格式。
public static void ConvertImageToPDF(String inputFileName, String outputFileName) throws Exception {

    // 实例化 Document 类的实例  
    Document doc = new Document();
    // 创建 DocumentBuilder 类的对象,以简化向文档添加内容的过程。  
    DocumentBuilder builder = new DocumentBuilder(doc);

    // 使用适当的阅读器从磁盘加载图像。
    // 可以加载的文件格式取决于机器上可用的图像阅读器。
    // 通过调用 createImageInputStream 方法加载输入图像文件并将其分配给 ImageInputStream 对象。
    ImageInputStream iis = ImageIO.createImageInputStream(new File(inputFileName));
    // 调用 getImageReaders 方法,该方法返回一个包含所有当前注册的 ImageReader 的 Iterator 并将其分配给 ImageReader 类的对象。
    ImageReader reader = ImageIO.getImageReaders(iis).next();
    // 调用 setInput 方法,将要使用的输入源设置为给定的 ImageInputStream 或其他 Object。 
    reader.setInput(iis, false);

    // 通过调用getNumImages方法获取图像中的帧数  
    int framesCount = reader.getNumImages(true);

    // 循环遍历所有帧。
    for (int frameIdx = 0; frameIdx < framesCount; frameIdx++) {
        // 在多帧图像的情况下,在每个新页面之前插入分节符。
        if (frameIdx != 0)
            builder.insertBreak(BreakType.SECTION_BREAK_NEW_PAGE);

        // 选择活动帧并将其分配给 BufferedImage 类的对象 
        BufferedImage image = reader.read(frameIdx);

        // 我们希望页面的大小与图像的大小相同。
	      // 将像素转换为点以将页面大小调整为实际图像大小。
	      // 调用 getPageSetup 方法访问当前页面设置并将其分配给 PageSetup 类的对象   
        PageSetup ps = builder.getPageSetup();
        // 通过调用 setPageWidth 方法设置页面高度 
        ps.setPageWidth(ConvertUtil.pixelToPoint(image.getWidth()));
        // 调用 setPageHeight 方法设置页面宽度 
        ps.setPageHeight(ConvertUtil.pixelToPoint(image.getHeight()));

        // 通过调用 insertImage 方法将图像插入到文档中,并将其定位在页面的左上角。
        builder.insertImage(
                image,
                RelativeHorizontalPosition.PAGE,
                0,
                RelativeVerticalPosition.PAGE,
                0,
                ps.getPageWidth(),
                ps.getPageHeight(),
                WrapType.NONE);
    }

    if (iis != null) {
        iis.close();
        reader.dispose();
    }
    // 通过调用 save 方法将文件保存为 PDF 文件格式
    doc.save(outputFileName);
}

您可以在下图中看到输出:

PNG到PDF转换

PNG到PDF转换

获得免费许可证

您可以获得 免费临时许可证 来尝试超出评估限制的 API。

加起来

我们可以在这里结束这篇博文。我们已经演示了使用 Java 以编程方式将 PNG 转换为 PDF 的 Java PDF 库的实现。该库允许您使用几行代码构建一个 PNG 到 PDF 转换器。此外,您可以访问此 PNG 到 PDF 转换 API 的文档conholdate.com 不断写新的有趣话题。因此,请保持联系以获取最新更新。

问一个问题

您可以在我们的 论坛 上告诉我们您的问题或疑问。

常见问题

如何将 PNG 转换为 PDF?

您可以使用这个 library 以编程方式在 Java 中将 PNG 转换为 PDF。它提供了有关其使用的全面文档。

如何在不损失质量的情况下将 PNG 保存为 PDF?

浏览此 部分 以了解如何使用 Java 库将 PNG 保存为 PDF 文件。您可以调用 save 方法将 PNG 文件保存为 PDF 文件。

也可以看看