You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Base64字符串合并多个PDF文件(无需本地文件)

合并Base64格式PDF文件的实现方案

你现在需要把基于本地文件的PDF合并改成仅用Base64字符串完成,不需要依赖本地文件,可以基于你原本用的Apache PDFBox库来调整,核心思路是把Base64字符串解码成内存流,合并后再转成Base64输出,全程不涉及本地文件操作。

具体实现代码

首先确保项目已引入Apache PDFBox依赖(以Maven为例):

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.32</version> <!-- 建议使用最新稳定版 -->
</dependency>

然后编写合并方法:

import org.apache.pdfbox.multipdf.PDFMergerUtility;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Base64;

public class PdfMerger {
    public String mergeBase64Pdfs(String... base64PdfList) throws Exception {
        // 初始化PDF合并工具
        PDFMergerUtility merger = new PDFMergerUtility();

        // 遍历所有Base64格式的PDF字符串,解码后添加为合并源
        for (String base64Pdf : base64PdfList) {
            // 将Base64字符串解码为字节数组
            byte[] pdfBytes = Base64.getDecoder().decode(base64Pdf);
            // 把字节数组转成内存输入流,作为合并源
            merger.addSource(new ByteArrayInputStream(pdfBytes));
        }

        // 使用内存输出流接收合并后的PDF内容,无需写入本地文件
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        merger.setDestinationStream(outputStream);

        // 执行合并操作
        merger.mergeDocuments(null);

        // 将合并后的PDF字节数组重新编码为Base64字符串返回
        return Base64.getEncoder().encodeToString(outputStream.toByteArray());
    }

    // 示例调用
    public static void main(String[] args) {
        try {
            PdfMerger merger = new PdfMerger();
            // 替换为实际的Base64 PDF字符串
            String pdf1Base64 = "你的第一个PDF的Base64内容";
            String pdf2Base64 = "你的第二个PDF的Base64内容";

            // 合并并获取结果
            String mergedPdfBase64 = merger.mergeBase64Pdfs(pdf1Base64, pdf2Base64);
            System.out.println("合并完成,结果为Base64字符串:");
            System.out.println(mergedPdfBase64);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

关键说明

  • 全程使用内存流(ByteArrayInputStream/ByteArrayOutputStream)处理,完全不依赖本地文件。
  • 通过Base64工具类完成字符串和字节数组的互转,确保PDF内容在Base64格式间正确转换。
  • 原代码中无效的OutputStream string = null;和System.out.print(string);已移除,改用内存流处理输出。
  • 实际使用时需注意捕获异常,比如Base64解码失败、PDF格式错误等情况。

内容的提问来源于stack exchange,提问作者Guilherme Floriano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 23:05:24