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

合并两个PDF文件得到空白PDF的问题及相关代码求助

排查合并后PDF空白的问题及解决方案

我来帮你定位这个合并后出现空白PDF的问题,结合你给出的代码,咱们从几个常见的方向排查:

1. 代码未实际执行(最容易忽略的点)

看你给出的代码片段,main()函数已经定义,但没有触发执行的逻辑!如果你的代码最后没有加上:

if __name__ == "__main__":
    main()

那整个合并逻辑根本没跑起来,生成的combined_example.pdf可能是一个空文件(因为代码没执行写入操作,或者只是创建了空文件)。先补上这段代码,再测试一次。

2. PyPDF2版本兼容性问题

你用的PdfFileMerger是PyPDF2旧版本的API,在2.0.0之后的版本里,官方推荐使用PdfMerger替代它,旧API在处理某些现代PDF(比如采用PDF 1.7+标准、带压缩或特殊结构的文件)时容易出现合并后空白的情况。

解决方法:

  • 先升级PyPDF2到最新版:
    pip install --upgrade PyPDF2
    
  • 替换代码中的PdfFileMerger为PdfMerger,同时加上加密PDF处理逻辑,修正后的核心代码:
    import PyPDF2
    from io import BytesIO
    
    def PDFmerge(pdfs, output):
        # 使用新版本的PdfMerger
        pdfMerger = PyPDF2.PdfMerger()
        for pdf in pdfs:
            try:
                with open(pdf, 'rb') as f:
                    pdf_reader = PyPDF2.PdfReader(f)
                    # 处理加密PDF(无密码的加密文件可直接解密)
                    if pdf_reader.is_encrypted:
                        pdf_reader.decrypt("")
                        # 将解密后的内容写入临时缓冲再合并
                        temp_buffer = BytesIO()
                        pdf_writer = PyPDF2.PdfWriter()
                        for page in pdf_reader.pages:
                            pdf_writer.add_page(page)
                        pdf_writer.write(temp_buffer)
                        temp_buffer.seek(0)
                        pdfMerger.append(temp_buffer)
                    else:
                        pdfMerger.append(f)
            except Exception as e:
                print(f"处理文件 {pdf} 时出错: {e}")
        with open(output, 'wb') as f:
            pdfMerger.write(f)
    
    def main():
        pdfs = ['example.pdf', 'rotated_example.pdf']
        output = 'combined_example.pdf'
        PDFmerge(pdfs, output)
    
    if __name__ == "__main__":
        main()
    

3. 源PDF文件本身的问题

如果上面的方法都没用,就要检查你的源文件:

  • 确认example.pdf和rotated_example.pdf本身不是空白文件,用PDF阅读器打开看看内容是否正常;
  • 检查PDF是否加密:有些加密的PDF即使能打开,PyPDF2读取时会失败,导致合并后无内容;
  • 检查PDF是否是扫描件(图片型PDF):PyPDF2无法读取图片型PDF的文本,但合并后应该会保留页面(只是还是图片),如果连页面都没有,可能是文件损坏;
  • 尝试用其他工具(比如Adobe Acrobat)合并这两个PDF,确认源文件能否正常合并,排除文件本身的问题。

4. 文件路径问题

如果你的PDF文件不在当前脚本的执行目录下,pdfs列表里的相对路径会找不到文件,但PyPDF2通常会抛出FileNotFoundError。如果没报错却生成空白文件,可能是你误写了文件名(比如大小写错误,Linux/macOS下文件名区分大小写),仔细核对文件名和路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:10:36