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

PyPDF2循环合并传参多PDF生成空文件,Python新手求指导

解决PyPDF2合并多个PDF生成空文件的问题

嘿,我完全懂你刚接触Python和PyPDF2时遇到的这种头疼问题!既然单个PDF在终端能正常处理,那问题肯定出在循环处理多个文件的逻辑上——大概率是你在循环里不小心重置了合并对象,或者漏掉了关键的页面添加步骤。

我来帮你拆解常见的错误点,再给你正确的实现方式:

最容易踩的两个坑

  • 在循环内重复创建合并对象:如果每次循环都新建PdfMerger或PdfFileWriter,之前添加的内容会被清空,最后自然生成空文件。
  • 漏掉遍历/添加页面的步骤:用旧版PdfFileWriter时,必须手动遍历每个PDF的页面并添加,只打开文件不添加页面等于白做。

推荐的正确实现(用PyPDF2的PdfMerger,更简洁)

现在PyPDF2官方推荐用PdfMerger来合并PDF,比旧的PdfFileWriter更直观,不容易出错:

from PyPDF2 import PdfMerger

def merge_multiple_pdfs(input_pdf_paths, output_file_path):
    # 只创建一次合并器实例!整个循环复用它
    pdf_merger = PdfMerger()
    
    for pdf_path in input_pdf_paths:
        # 直接append整个PDF,自动处理所有页面
        pdf_merger.append(pdf_path)
    
    # 所有文件都添加完成后,再写入输出文件
    pdf_merger.write(output_file_path)
    pdf_merger.close()

# 调用示例:把你的PDF路径列表传进去
my_pdfs = ["doc1.pdf", "report2.pdf", "notes3.pdf"]
merge_multiple_pdfs(my_pdfs, "final_merged.pdf")

如果你习惯用旧版的PdfFileWriter/Reader

如果你的代码是基于旧API写的,那要确保正确遍历每个页面并添加:

from PyPDF2 import PdfFileWriter, PdfFileReader

def merge_with_old_api(input_pdf_paths, output_path):
    # 输出对象在循环外初始化,全程复用
    output_writer = PdfFileWriter()
    
    for pdf_path in input_pdf_paths:
        with open(pdf_path, 'rb') as pdf_file:
            pdf_reader = PdfFileReader(pdf_file)
            # 必须遍历当前PDF的所有页面,逐个添加到输出
            for page_num in range(pdf_reader.numPages):
                page = pdf_reader.getPage(page_num)
                output_writer.addPage(page)
    
    # 所有页面添加完毕后再写入文件
    with open(output_path, 'wb') as output_file:
        output_writer.write(output_file)

额外检查项

  • 确认你的input_pdf_paths列表里的文件路径都是正确的,没有拼写错误或文件不存在(如果文件找不到,PyPDF2可能不会报错,但也不会添加任何内容)
  • 升级PyPDF2到最新版:pip install --upgrade PyPDF2,旧版本可能存在一些已知的合并bug
  • 检查你要合并的PDF本身是不是没有内容(不过你说单个能正常工作,这条可以忽略)

对比一下你的代码,看看是不是踩了上面说的坑——比如是不是在循环里重新创建了合并对象,或者漏掉了添加页面的步骤。调整后应该就能正常生成合并后的PDF了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:41:26