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

如何使用Python将多页PDF合并为单个可复制文本的PDF?

合并多个文本可复制PDF的Python脚本

要实现保留文本可复制性的PDF合并,推荐使用PyPDF2库——它直接操作PDF的页面结构,不会将内容转成图片,完美适配AI读取的需求。

步骤1:安装依赖库

执行以下命令安装最新版PyPDF2:

pip install PyPDF2

步骤2:合并脚本

以下脚本支持批量合并指定目录下的PDF,或手动指定PDF列表:

from PyPDF2 import PdfMerger
import os

def merge_pdfs(input_pdf_paths, output_path):
    # 初始化PDF合并器
    merger = PdfMerger()
    
    for pdf_path in input_pdf_paths:
        try:
            # 添加PDF文件到合并器
            merger.append(pdf_path)
            print(f"已添加文件: {pdf_path}")
        except Exception as e:
            print(f"处理文件 {pdf_path} 时出错: {str(e)}")
    
    # 写入合并后的PDF
    with open(output_path, 'wb') as output_file:
        merger.write(output_file)
    merger.close()
    print(f"合并完成,输出文件: {output_path}")

# 示例用法
if __name__ == "__main__":
    # 方式1:手动指定要合并的PDF路径列表(按顺序排列)
    # pdf_list = ["file1.pdf", "file2.pdf", "file3.pdf"]
    
    # 方式2:合并指定目录下的所有PDF(按文件名排序)
    target_dir = "./pdfs_to_merge"
    pdf_list = [os.path.join(target_dir, f) for f in os.listdir(target_dir) if f.endswith('.pdf')]
    pdf_list.sort()  # 按文件名排序,保证合并顺序
    
    output_file = "merged_output.pdf"
    merge_pdfs(pdf_list, output_file)

关键注意事项

  • 确保输入的PDF是文本型PDF:如果输入的是扫描生成的图片型PDF,合并后依然是图片格式,无法复制文本——这种情况需要先做OCR识别,不属于本脚本的处理范围。
  • 处理加密PDF:如果遇到加密的PDF,需要先在append前添加解密逻辑:
    from PyPDF2 import PdfReader
    reader = PdfReader(pdf_path)
    if reader.is_encrypted:
        # 如果有密码,替换为实际密码;无密码则传空字符串
        reader.decrypt("your_password")
        merger.append(reader)
    else:
        merger.append(pdf_path)
    
  • 避免使用旧版本PyPDF2:1.x版本的PdfFileMerger已被弃用,必须使用2.x及以上版本的PdfMerger。

常见失败原因排查

  1. 路径错误:检查输入PDF的路径是否正确,避免相对路径混乱,建议使用绝对路径。
  2. PDF文件损坏:尝试用PDF阅读器打开输入文件,确认文件可正常读取。
  3. 依赖库版本问题:卸载旧版本后重新安装最新版:pip uninstall PyPDF2 && pip install PyPDF2

内容的提问来源于stack exchange,提问作者Benedikt Wörner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 09:40:04