Java 中将多个 PDF 文件合并为一个 PDF

一.前言

我们将从以下两个方面向您展示如何将多个PDF文件合并为一个PDF:
1. 将文件中的多个 PDF 合并为单个 PDF
2. 将流中的多个 PDF 合并为单个 PDF

1. 了解 Spire.PDF 库

要在 Java 中合并 PDF 文件,我们将使用Spire.PDF 库。Spire.PDF for Java 是一个 PDF API,使 Java 应用程序能够在不使用 Adob​​e Acrobat 的情况下读取、写入和保存 PDF 文档。它提供了用于操作 PDF 文件的广泛功能,包括将多个 PDF 文件合并到单个文档中。

在我们使用 Spire.PDF 合并 PDF 文件之前,我们需要将其依赖项添加到我们的 Java 项目中。我们可以通过向 Maven 项目添加以下依赖项来实现此目的:

xml 复制代码
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>9.5.6</version>
    </dependency>
</dependencies>

2.将文件中的多个 PDF 合并为单个 PDF

  1. 获取要合并的文档的路径并将其存储在 String 数组中。
  2. 使用PdfDocument.mergeFiles()方法合并选定的 PDF 文件。
  3. 使用PdfDocumentBase.save()方法保存 PDF 文档。
java 复制代码
import com.spire.pdf.*;

public class mergePDF {

    public static void main(String[] args) throws Exception {

        //Get the paths of the documents to be merged
        String[] files = new String[] {
                "D:\\sample.pdf",
                "D:\\sample1.pdf"};

        //Merge documents and return an object of PdfDocumentBase
        PdfDocumentBase pdf = PdfDocument.mergeFiles(files);

        //Save the result to a PDF file
        pdf.save("MergedPDF.pdf", FileFormat.PDF);

    }
}

3.将流中的多个 PDF 合并为单个 PDF

从流中加载 PDF 并将其合并为新的 PDF 是处理多个 PDF 文档而无需将它们保存到磁盘的便捷有效的方法。当处理您不想存储在本地驱动器上的大型或敏感文件时,此方法特别有用。Spire.PDF还支持从流中加载PDF,然后将它们组合成一个新的PDF文件。

  1. 获取 PDF 流的路径,然后将它们存储到FileInputStream数组中。
  2. 使用PdfDocument.mergeFiles()方法合并选定的 PDF 文件。
  3. 使用PdfDocumentBase.save()方法保存 PDF 文档。
java 复制代码
import com.spire.pdf.*;
import java.io.*;

public class mergePDFbyStream {

    public static void main(String[] args) throws Exception {

        FileInputStream stream1 = new FileInputStream(new File("sample.pdf"));
        FileInputStream stream2 = new FileInputStream(new File("sample1.pdf"));

        InputStream[] streams = new FileInputStream[]{stream1, stream2};

        //Merge these documents and return an object of PdfDocumentBase
        PdfDocumentBase pdf = PdfDocument.mergeFiles(streams);

        //Save the result to a PDF file
        pdf.save("MergedPDF.pdf", FileFormat.PDF);

    }
}
相关推荐
曲幽14 小时前
FastAPI自动生成的API文档太丑?我花了一晚上把它改成了客户愿意付费的样子
python·fastapi·web·swagger·openapi·scalar·docs
程序设计实验室14 小时前
后 Django 时代:SQLAlchemy 2.0、Tortoise 与 Piccolo 三大异步 ORM 选型指南
python
qq_6285157614 小时前
Java实现pdf导出
java·vue.js·react.js·pdf
无巧不成书021814 小时前
Java变量初始化全攻略:2026最新规范+新手避坑实战
java·开发语言·java基础·java变量初始化·java语法规范·var关键字
爱分享的阿Q14 小时前
技术饱和度视角下的编程语言选择:一场关于供需博弈的深度思考
java·python·go
E_ICEBLUE14 小时前
Python 办公自动化:快速将 HTML 转换为 PDF 格式
python·pdf·html
IT大师兄吖14 小时前
paddleocr PP-StructureV3 pdf转md 懒人整合包 gpu可用
pdf
拆房老料14 小时前
开源预览引擎 BaseMetas Fileview v1.4.0 发布:PDF 渲染升级 + RAR5 修复 + 压缩包优化,企业级文档预览更强了
3d·pdf·开源·开源软件
Highcharts.js14 小时前
企业级可视化生态系统|关于Highcharts集成的前端框架、后端编程语言与生态
开发语言·javascript·python·前端框架·编辑器·编程语言·highcharts