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

使用二进制读写操作在Python中合并两个PDF未得到预期结果怎么办

问题排查与解决方案

核心问题原因

你当前的实现逻辑本质是直接拼接两个PDF的二进制内容,这不符合PDF文件的格式规范,是无法生成合法可用的PDF文件的:

  • PDF是结构化的二进制文件,每个独立PDF都包含固定的文件头、页面对象、交叉引用表、文件尾元数据结构
  • 直接拼接两份PDF二进制内容后,新文件会存在两套互不兼容的元数据,PDF阅读器无法识别这种非法结构,自然无法正常打开、显示合并后的内容

现有代码的其他小问题

  • 打开new.pdf时使用了ab追加模式,如果之前已经存在同名的new.pdf文件,会在原有内容后追加新内容,大概率会生成更混乱的文件,应该改成wb覆盖写入模式
  • 没有做文件异常处理,如果读取文件过程中报错,会出现文件句柄没有正常关闭的问题,推荐使用with上下文管理器自动管理文件开关

正确实现方案

推荐使用第三方PDF处理库PyPDF2完成合并,首先先安装依赖:
pip install pypdf2

合并代码示例:

from PyPDF2 import PdfMerger

# 初始化合并器
merger = PdfMerger()

# 依次添加要合并的PDF文件
merger.append("1.pdf")
merger.append("2.pdf")

# 导出合并后的文件
merger.write("new.pdf")
# 关闭合并器释放资源
merger.close()

更安全的上下文管理器写法:

from PyPDF2 import PdfMerger

with PdfMerger() as merger:
    for pdf_path in ["1.pdf", "2.pdf"]:
        merger.append(pdf_path)
    merger.write("new.pdf")

内容的提问来源于stack exchange,提问作者Haldhar Dwivedi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:54:03