如何批量修改PDF中的指定数字并另存为多个PDF文件?
批量修改PDF指定数字并生成新文件的方法
前提说明
仅当原document.pdf为可编辑的文本型PDF时,以下方法有效;若为扫描生成的图片型PDF,需先通过OCR工具(如Tesseract)转换为文本型PDF后再处理。
方法一:Bash脚本+qpdf+sed(Linux/macOS)
适合熟悉命令行的用户,操作高效:
- 安装依赖工具:
qpdf:用于拆解/重组PDF,保留可编辑属性(通过包管理器安装,如apt install qpdf或brew install qpdf)sed:系统自带的文本替换工具
- 编写循环脚本(保存为
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 - 给脚本加执行权限:
chmod +x batch_pdf.sh - 运行脚本:
./batch_pdf.sh
方法二:Python脚本(跨平台,保留原格式)
推荐使用PyMuPDF(fitz),能精准替换文本且完整保留原PDF格式,比其他PDF库更可靠:
- 安装依赖库:
pip install pymupdf - 编写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}") - 运行脚本:
python batch_pdf.py
注意事项
- 命令行方法中的
\b是正则表达式的单词边界,用于避免误替换包含1001的长字符串 - 批量生成300个文件需要一定时间,请勿中途中断进程
- 若原PDF有加密或权限限制,需先解除限制再进行替换操作
内容的提问来源于stack exchange,提问作者Mr Le
相关产品推荐
相关产品推荐

