实测PDF批量合并:按页序自动编号

上个月整理公司年度报告,手头有37个独立的PDF章节文件,每个文件内部页码正常,但文件命名乱七八糟——有叫“报告_最终版”的,有叫“附录_v3”的,甚至还有“新建文件夹(2)”。直接拖进Adobe Acrobat合并,结果页序全乱,第二章插到附录后面去了。我试了好几种免费工具,最后发现用Python脚本加正则表达式处理文件名,能精准控制合并顺序。

第一步,把所有PDF文件放到同一个文件夹,然后按实际阅读顺序给文件名加前缀数字,比如“01_封面”“02_目录”“03_第一章”。注意数字必须两位以上,否则“10”会排在“2”前面。我直接用了批量重命名软件,把原文件名替换成“01_原文件名”的格式。第二步,写一个简单的Python脚本(依赖PyPDF2库),脚本里用sorted()按文件名排序,然后逐页合并。实测这个脚本对几百页的大文件也稳定,没出现内存暴涨的情况。

第三步,合并后检查书签。如果原PDF自带书签,PyPDF2合并时会丢失层级。我改用pdfkit库调用wkhtmltopdf,先把所有PDF转成HTML再合并,虽然慢一点,但能保留原始书签结构。最后用Adobe Acrobat的“优化扫描”功能一键压缩,文件从120MB降到35MB。整个过程耗时10分钟,比手动拖拽调整节省了2小时。

问:合并后页序正确但书签丢失怎么办?

答:可以用python的pypdf2库先提取每个源文件的书签信息,合并后重新注入。或者像我用wkhtmltopdf中转,能保留原始书签树,但需注意中文文件名编码问题,建议全部转拼音或英文。

问:Python脚本合并时报错“TypeError: cannot unpack non-iterable Pypdf2 object”?

答:新版PyPDF2读取器返回PdfReader对象而不是直接可迭代,需要改用for page in reader.pages: 遍历。我踩过这个坑,更新到PyPDF2 3.0以上版本后用pages属性就没问题了。

问:有没有不用代码的图形化工具能按自定义顺序合并?

答:实测PDF24 Creator的“合并PDF”功能支持拖拽重排页面顺序,免费无广告。优点是可以保存排序模板,下次直接调用来合并同结构的文件。但批量处理时每份报告都要手动排序,不如脚本自动读取文件名高效。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2305938578@qq.com 举报,一经查实,本站将立刻删除,本文链接:https://www.spubm.cn/71185.html

(0)
上一篇 15小时前
下一篇 15小时前

好文章推荐

发表评论

登录后才能评论