当前位置: 首页 > news >正文

【python实用小脚本-187】Python一键批量改PDF文字:拖进来秒出新文件——再也不用Acrobat来回导

Python一键批量改PDF文字:拖进来秒出新文件——再也不用Acrobat来回导

PDF文字替换, 批量导出, 零依赖转档, 一键完成, 瑞士军刀

故事开场:一把瑞士军刀救了周五下班的你

周五 18:00,老板甩来 50 份合同 PDF:
“把里面的‘2023’全部改成‘2024’,今晚就要!”
你打开 Acrobat,发现要:

  1. 先导出 Word
  2. 逐个查找替换
  3. 再导回 PDF
    来回三遍,眼睛已花。
    这时,你从 U 盘掏出“小白瑞士军刀”——pdf_editor.py
    把 PDF 拖进去,一行命令:
python pdf_editor.py

30 秒后,50 份新 PDF 整整齐齐躺在文件夹,老板直呼“效率王”!
痛点解决:再也不用巨软全家桶,一键改字、一键导出。


完整代码(≤1000字符,直接展示)

from docx import Document
from pdf2docx import parse
import subprocess, osdef pdf_to_word(pdf_file):parse(pdf_file, 'word.docx')def edit_word(find, replacement):doc = Document('word.docx')for p in doc.paragraphs:if find in p.text:p.text = p.text.replace(find, replacement)doc.save('converted.docx')def word_to_pdf():subprocess.run(["libreoffice", "--headless", "--convert-to", "pdf", 'converted.docx'])for tmp in ['word.docx', 'converted.docx']:if os.path.exists(tmp):os.remove(tmp)if __name__ == "__main__":file, find, replace = input("格式:文件 旧文本 新文本> ").split()pdf_to_word(file)edit_word(find, replace)word_to_pdf()

代码解析

功能块 1:PDF → Word 零门槛

pdf2docx.parse 一行把 PDF 变成可编辑的 .docx,保留格式。

parse(pdf_file, 'word.docx')

功能块 2:全文快速替换

遍历所有段落,直接 str.replace,比 Word 查找更快。

for p in doc.paragraphs:if find in p.text:p.text = p.text.replace(find, replacement)

功能块 3:Word → PDF 一键回

用 LibreOffice 无头模式批量转 PDF,再清理中间文件。

subprocess.run(["libreoffice", "--headless", "--convert-to", "pdf", 'converted.docx'])

如果还想更厉害

扩展点子 1:批量文件夹

把整目录 PDF 一次性改字,自动按原名输出。

import glob
for pdf in glob.glob('*.pdf'):pdf_to_word(pdf)edit_word('2023', '2024')word_to_pdf()os.rename('converted.pdf', pdf.replace('.pdf', '_new.pdf'))

扩展点子 2:GUI拖放窗口

tkinter 做窗口,拖文件+输入框即完成。

import tkinter.filedialog as fd
pdf_path = fd.askopenfilename()
# 复用上面三步

总结

pdf_editor.py 这把 40 行瑞士军刀,把“PDF→Word→替换→PDF”四步压缩成“拖进去+回车”。
你无需安装 Acrobat,就能在 Linux/Mac/Windows 上批量改字、批量导出。
再加两行循环或 GUI,它就从脚本升级成 PDF 工厂。
下次再遇“批量改合同”,直接跑脚本,省时省力!

源码获取

完整代码已开源,包含详细的注释文档:
🔗 [GitCode仓库] https://gitcode.com/laonong-1024/python-automation-scripts
📥 [备用下载] https://pan.quark.cn/s/654cf649e5a6 提取码:f5VG

http://www.lryc.cn/news/621816.html

相关文章:

  • fastdds.ignore_local_endpoints 属性
  • PDF Replacer:高效便捷的PDF文档内容替换专家
  • 基于 Spring AI + Ollama + MCP Client 打造纯本地化大模型应用
  • JavaScript(JS)DOM(四)
  • 大模型微调分布式训练-大模型压缩训练(知识蒸馏)-大模型推理部署(分布式推理与量化部署)-大模型评估测试(OpenCompass)
  • MuMu模拟器Pro Mac 安卓手机平板模拟器(Mac中文)
  • 代码随想录Day51:图论(岛屿数量 深搜广搜、岛屿的最大面积)
  • 解决量化模型中的 NaN 问题:为何非量化层应选用 FP32?(41)
  • 波浪模型SWAN学习(1)——模型编译与波浪折射模拟(Test of the refraction formulation)
  • Docker安装——配置国内docker镜像源
  • flutter 跨平台编码库 protobuf 工具使用
  • RAGFlow入门
  • Trae2.0:AI 编程新时代的引领者
  • 反射和类加载机制
  • 智能算法突破动态挑战,效率革命重塑计算未来!
  • (自用)console.log怎么上色
  • 使用转换函数重载布尔值类
  • 读《精益数据分析》:黏性(Stickiness)—— 验证解决方案是否留住用户
  • 自适应UI设计解读 | Fathom 企业人工智能平台
  • 5G工业一体机汽车零部件工厂的无纸化管理
  • HarmonyOS 实战:用 @Observed + @ObjectLink 玩转多组件实时数据更新
  • Go从入门到精通系列学习路线规划
  • Day62--图论--97. 小明逛公园(卡码网),127. 骑士的攻击(卡码网)
  • 智能家居【home assistant】(一)-在Windows电脑上运行home assistant
  • 论文阅读:基于大语言模型的多机器人任务分配与调度的自动 MILP 模型构建
  • GitHub 上 Star 数量前 18 的开源 AI Agent 项目
  • 基于uiautomation的自动化流程RPA开源开发演示
  • Linux网络基础(一)
  • 【补充】数据库中有关系统编码和校验规则的简述
  • 【软件设计模式】前置知识类图、七大原则(精简笔记版)