PDF合并方案

一、背景介绍

有许多场景涉及PDF合并,比如考试前下发多个学习资料,想将多个PDF合并成单个PDF,便于搜索。

本文提及PDF合并时,暗含压缩且同时保画质的要求。后文所有PDF合并均基于同一测试样本集,共291个矢量PDF,要求合并成一个all.pdf。

————————————————————————–
PDFsam Basic
https://pdfsam.org/
https://pdfsam.org/download-pdfsam-basic/
————————————————————————–

只说PDF合并,免费的PDFsam Basic即可,但这是垃圾方案,合并后all.pdf有241MB。相比之下,Adobe Acrobat XI Pro合并、优化、压缩,这一套流程下来,15.4MB;只合并,31.1MB,优化能稍小些,也是31.1MB,压缩后才15.4MB。实测,用PDFsam合并
后的PDF,可用Acrobat优化、压缩至15.4MB。

有全功能版Acrobat,就不必瞎折腾其他方案了。本文只讨论PC版本地免费软件方案,完全不考虑在线方案、联网方案、云端方案之类的。未讨论给PDF加挂书签的事,非刚需。

二、ghostscript

From ZZ & UID(5615345989)

apt-get install ghostscript

gs -dCompatibilityLevel=1.4 -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile=/tmp/all.pdf $(ls *.pdf | sort -n)
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/screen -sOutputFile=/tmp/all.pdf $(ls *.pdf | sort -n)

-dPDFSETTINGS=/screen Low quality and small size at 72dpi.
-dPDFSETTINGS=/ebook Slightly better quality but also a larger file size at 150dpi.
-dPDFSETTINGS=/prepress High quality and large size at 300 dpi.

笔者的gs man手册中没有CompatibilityLevel这个参数,应该是平台或版本差异所致。用/ebook合并出来33.1MB,大致相当于Acrobat的优化,比不上Acrobat的压缩。用/screen合并出来15.7MB,图像质量下降得厉害,并不推荐。

三、PDF24

From UID(5941823583) & UID(1640026281)

PDF24,一个德国软件,好像是Java开发的。免费不开源,有在线版、离线版,界面语言有中文、英文。Win7/8用一个版本,Win10/11用另一个版本,别下错了。

————————————————————————–
PDF24 Tools (在线版)
https://tools.pdf24.org

PDF24 Creator (离线版)
https://tools.pdf24.org/en/creator
https://creator.pdf24.org/listVersions.php
https://download.pdf24.org/pdf24-creator-11.16.0-x64.exe (Win10)
————————————————————————–

PDF24的”合并PDF”结果有243MB,相当于PDFsam的合并。”优化PDF”意义不大。”压缩PDF”可对单一PDF压缩,不一定是PDF24的合并结果。缺省压缩参数如下

DPI:150 图像质量:75 颜色:不变

压缩至36.1MB,放大至232%,仍算清晰。若追求高画质,可调整参数

DPI:200 图像质量:90 颜色:不变

压缩至46.8MB。实测后觉得,若非画质癖,就用缺省参数吧。

PDF24最大的坏处是,离线安装后占用空间较大,不够轻型。若这不是问题的话,可
用。

四、PDFPatcher(PDF补丁丁)

From UID(2710998114)

————————————————————————–
PDFPatcher(PDF补丁丁)
https://github.com/wmjordan/PDFPatcher
https://github.com/wmjordan/PDFPatcher/releases
https://github.com/wmjordan/PDFPatcher/releases/download/v1.0.1/PDFPatcher.1.0.1.4220.7z
————————————————————————–
合并文档
添加文件
选择所有待合并PDF
功能选项
尝试合并PDF文档重复数据以缩小结果文件
生成合并文件
————————————————————————–

合并、压缩结果35.7MB。PDFPatcher最大的好处是绿色、小巧,展开即用。

五、Smallpdf 1.24.2.0

From 小钻风 & UID(1242059990)

————————————————————————–
Smallpdf
https://smallpdf.com
https://download.smallpdf.com/desktop/win/Smallpdf-Installer.exe (x64/1.24.2.0)

SHA256 5b6d7e3c3a474c135dd0d9b310027bd44fcfffcb0ec3c2fd3bd862f640430653
————————————————————————–
Smallpdf 1.24.0离线安装方法及无限试用 – 攻防之间 [2019-03-15]
https://www.52pojie.cn/thread-899911-1-1.html
————————————————————————–

官网现在不再显式提供1.24.2.0版Smallpdf-Installer.exe,但实际仍提供下载,前述下载链接由小钻风提供。此外,可通过SHA256从「微步在线」下载,前提是知道SHA256。安装方案只适用于1.24.x版,之后的新版不适用。

先离线安装,比如断网安装或用PFW阻止联网,笔者采用后者。

netsh.exe advfirewall firewall add rule name=”Block Smallpdf” enable=yes dir=out action=block profile=any program=”C:\Users\xxx\AppData\Local\Smallpdf\Smallpdf.exe”
netsh.exe advfirewall firewall show rule name=”Block Smallpdf” dir=out verbose

可用wf.msc添加上述规则,注意示例中用户名是xxx,需要改成你自己的。

安装快结束时,会自动在浏览器中打开一个页面,安装界面有相应提示。不要理它们,直接关闭浏览器中刚打开的页面,用Process Explorer或任务管理器杀掉所有Smallpdf.exe实例,安装已经结束。编辑如下文件:

notepad %USERPROFILE%\AppData\Roaming\Smallpdf\preferences.json

————————————————————————–
old

“system.local_token”: null,
“system.trial_duration_limit”: 5,
————————————————————————–
new

“system.local_token”: “1”,
“system.trial_duration_limit”: 36500,
————————————————————————–

原理是,有全功能试用期5天,改成100年。将preferences.json设置成”只读”:

attrib +r %USERPROFILE%\AppData\Roaming\Smallpdf\preferences.json
attrib %USERPROFILE%\AppData\Roaming\Smallpdf\preferences.json

此安装方案不修改PE,安全无毒,不会惹到杀软。

先Merge到242MB,再Compress到24MB,无法指定压缩参数,但压缩结果清晰度可接受。Smallpdf比较傻瓜化,适合小白,安装过程不太适合小白。

六、其他讨论

From UID(7432902670)

金山PDF合并完243MB,使用金山自带的压缩,选择低清晰度、最小体积,压缩后220MB,而且软件还是收费的。这算有效反馈,可以避坑。

From UID(1727858283) & UID(6140947238)

https://github.com/Frooodle/Stirling-PDF

Docker布署的本地方案,不适用于Windows用户,未测试。

后记

本文只收录了用同一测试样本集实测过的各种方案,其他方案未收录。

各种方案合并压缩后的大小随软件版本而变化,纯图片PDF、矢量PDF的压缩效果不一样,这些差异不特别强调,假设知道自己在说什么。

有全功能版Acrobat,就不必瞎折腾其他方案了。PDFsam这种属于反面例子。Linux用户用ghostscript即可。Windows用户,PDF24、PDFPatcher、Smallpdf随自己喜欢吧,笔者个人倾向Smallpdf。

版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。

Spread the word. Share this post!

Meet The Author