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

如何批量修改PDF中的指定数字并另存为多个PDF文件?

批量修改PDF指定数字并生成新文件的方法

前提说明

仅当原document.pdf为可编辑的文本型PDF时,以下方法有效;若为扫描生成的图片型PDF,需先通过OCR工具(如Tesseract)转换为文本型PDF后再处理。


方法一:Bash脚本+qpdf+sed(Linux/macOS)

适合熟悉命令行的用户,操作高效:

  1. 安装依赖工具:
    • qpdf:用于拆解/重组PDF,保留可编辑属性(通过包管理器安装,如apt install qpdf或brew install qpdf)
    • sed:系统自带的文本替换工具
  2. 编写循环脚本(保存为batch_pdf.sh):
    #!/bin/bash
    SRC_PDF="document.pdf"
    START=1002
    END=1300
    
    for ((i=START; i<=END; i++)); do
        FILE_NUM=$((i - 1000))
        OUT_PDF="document${FILE_NUM}.pdf"
        # 精准替换独立的"1001"(避免误替换如"10010"这类字符串)
        qpdf --qdf "$SRC_PDF" - | sed "s/\b1001\b/$i/g" | qpdf - "$OUT_PDF"
        echo "生成文件:$OUT_PDF"
    done
    
  3. 给脚本加执行权限:chmod +x batch_pdf.sh
  4. 运行脚本:./batch_pdf.sh

方法二:Python脚本(跨平台,保留原格式)

推荐使用PyMuPDF(fitz),能精准替换文本且完整保留原PDF格式,比其他PDF库更可靠:

  1. 安装依赖库:pip install pymupdf
  2. 编写Python脚本(保存为batch_pdf.py):
    import fitz  # PyMuPDF
    
    # 配置参数
    src_pdf = "document.pdf"
    start_num = 1002
    end_num = 1300
    target_str = "1001"
    
    for current_num in range(start_num, end_num + 1):
        # 计算输出文件序号:1002 → document2.pdf
        file_idx = current_num - 1000
        output_pdf = f"document{file_idx}.pdf"
        
        # 打开原PDF并批量替换
        doc = fitz.open(src_pdf)
        for page in doc:
            # 精准定位所有"1001"的位置
            for rect in page.search_for(target_str):
                # 覆盖原文本并写入新数字
                page.add_redact_annot(rect, str(current_num))
                page.apply_redactions()
        doc.save(output_pdf)
        doc.close()
        print(f"生成完成:{output_pdf}")
    
  3. 运行脚本:python batch_pdf.py

注意事项

  • 命令行方法中的\b是正则表达式的单词边界,用于避免误替换包含1001的长字符串
  • 批量生成300个文件需要一定时间,请勿中途中断进程
  • 若原PDF有加密或权限限制,需先解除限制再进行替换操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:10:25