创建: 2024-02-27 19:51
更新: 2024-02-29 11:33
https://scz.617.cn/misc/202402271951.txt目录:
☆ 背景介绍
☆ ghostscript
1) For Linux
2) For Windows
☆ PDF24
☆ PDFPatcher(PDF补丁丁)
☆ Smallpdf 1.24.2.0
☆ PDF-XChange Editor Plus (PDFXEdit)
☆ MuPDF
1) For Linux
2) For Windows
☆ 其他讨论
☆ 后记
TXT做了重要更新,新增Windows版gs、PDFXEdit、MuPDF的获取与使用示例。公众号这边只补录新增内容,完整更新直接PC上拖TXT看吧。
前文见
https://mp.weixin.qq.com/s/3uWeLcLFHqyFWGUKxTXpBQ
☆ ghostscript
1) For Linux
gs -dCompatibilityLevel=1.7 -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/default -sOutputFile=/tmp/all_tmp.pdf $(ls *.pdf | sort -n)
qpdf --compress-streams=y --object-streams=generate /tmp/all_tmp.pdf /tmp/all.pdf
用/default合并出来31.7MB,比/ebook还小,画质一样。看了gs帮助文档,本来就不建议乱设PDFSETTINGS参数。
用qpdf压缩/default结果,得到30.9MB。这个缩减占比可忽略,意义不大。
2) For Windows
From UID(6083767801)
有Windows版gs
https://ghostscript.com/releases/gsdnld.html
https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/gs10021w64.exe
缺省安装到:
C:\Program Files\gs\gs10.02.1\
这种软件从Linux移植而来,不依赖注册表及各种Windows环境变量,可以安装、复制、卸载,得到便携版,我就这么干的。
cmd没有bash的"$(ls *.pdf | sort -n)",可先构造file.lst文件,其内容形如:
X:\pdf\1.pdf
X:\pdf\2.pdf
...
X:\pdf\291.pdf
不必手写file.lst,可在资源管理器中全选X:\pdf\下所有文件,按住Shift,鼠标右键"复制文件路径",再粘贴到file.lst中。不必删除双引号,但最后一行必须回车后以空行结尾,否则最后一行文件不被合并。
执行如下命令进行PDF合并压缩:
"C:\Program Files\gs\gs10.02.1\bin\gswin64c.exe" -dCompatibilityLevel=1.7 -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/default -sOutputFile=X:\some\all.pdf @X:\any\file.lst
注意file.lst路径前面有个@号,不可缺少。合并结果26.1MB。Windows版gs 10.02.1,Linux版gs 9.55.0,看上去新版gs压缩有改进。
☆ PDF-XChange Editor Plus (PDFXEdit)
PDF-XChange Editor Plus (PDFXEdit)
https://www.pdf-xchange.com/
https://downloads.pdf-xchange.com/PDFXEdit10_Portable_x64.zip (64位便携版)
https://downloads.pdf-xchange.com/PDFXVE8.zip (ZIP中是EXE安装包,同时支持32/64位)PDFXEdit10_Portable_x64.zip
SHA256 25ddcbd37bc4c4aebcb0512a12d7c8e601f414c3563c06c06013fd3506a59b7f
PDFXEditCore.x64.dll (crack)
SHA256 574d3ef726c6ba1f7af31823c3820af7d86892b7e760de6817dbc3be0a09fbc4
PDFXVE8.zip
SHA256 537f18b5e9c862c2e3b509d6c0f8e5f8b62dcf51abc94279a9129984cd457183
PDF-XChange Editor Plus V8批量激活序列号 - [2023-03-21]
https://www.52pojie.cn/thread-1762517-1-1.html
V8批量激活序列号:
PEP80-rc3yMbRY8jmrX5rbpFof3zXQ/03JMJX+91vO4mF+rsfQ11B3mGMEbFU5whpr1Awc
UutsGpmcw5il5Mek+YOdioXs9y5wJWCpQeErTpiJzspDfLkW6aeTWeJSBR8PUvq6znwqt9Wl9Le3hnkm
Wc3EMRFfTtdKI1YzZsrT2DPX0G2yjtwWh0U8VbmMIVKYmdJj0V7GVgROMoE9wTL5TvsANFipg9poNeoq
K96vJbvNxk6oBAf3UxvntEuwUN890QcBQxxg7oztxBZC9CuTbTVSS6dhhSP4pBtm/1ADOh2gM058mf8C
Da/OXdrz5zoFhflNWcLmtA5ILEn6csdvnGuGHY1cdrm0rF/CMXIKnEimHeYp6jDnzT9M1T4X4JbvRw=
PDFXEdit对中国大陆地区有歧视,需挂线路下载,有官方便携版。
这是商业软件,V8有不用联网激活的序列号,kanxue有V9的破解,52pojie有V10的破解,小钻风给我找了V10的单DLL破解。据说非序列号破解不完美,有暗桩未拔,不要用来编辑重要PDF。若只是合并压缩PDF,用V10无妨,否则建议用序列号激活V8。
From UID(6813365764) & 小钻风
文件->新建文档->合并文件为单个PDF->添加文件->酌情调整选项->确定
上一步完成合并,242MB。可不保存,直接优化、压缩:
文件->另存为优化的副本->兼容性设成1.7->确定
默认配置压缩结果21MB。JPEG质量由"中等"改为"高",29.9MB。用"JPEG2000 质量中等",17.4MB。还有其他组合,清晰度可接受,不放大对比看不出。
文件->另存为优化的副本->审核空间使用
在此可看到原242MB合并结果的组成成份,比如:
Images 35.81MB
Fonts 205.24MB
这两项占了大头。作为对比,优化压缩结果的组成成份:
Images 18.57MB
Fonts 2.13MB
再想缩小尺寸,只能降低图像画质。金山PDF好像完全不处理Fonts。
scz:
上面是V10压缩效果,V8压缩得到26.6MB,没有数量级差异。有洁癖者、需要可靠性者,推荐用V8。PDFXEdit用来合并压缩PDF有些大材小用,真正的优势是其强大的编辑能力,只是我用不上。
☆ MuPDF
MuPDF
https://mupdf.com/
https://mupdf.com/downloads/archive/mupdf-1.23.0-windows.zip
1) For Linux
From UID(2516417790)
apt-get install mupdf-toolsmutool merge -o /tmp/all_tmp.pdf $(ls *.pdf | sort -n)
mutool clean -gggg -l -z -f -i -c -s /tmp/all_tmp.pdf /tmp/all.pdf
merge合并到243MB,clean压缩到37.9MB,压缩效果一般。
2) For Windows
Windows版mutool最大的问题是,没法用$(ls *.pdf | sort -n),不支持@file.lst。相比之下,Windows版gs支持@file.lst。假设这样merge:
cd /d X:\pdf\
"X:\Green\MuPDF\mutool.exe" merge -o X:\some\all_tmp.pdf *.pdf
merge顺序同"dir /B *.pdf"的输出,并非从1到291递增,不可接受。假设有:
1.pdf
2.pdf
...
291.pdf
"dir /B *.pdf"时,并非数字递增顺序,比如出现了:
88.pdf
89.pdf
9.pdf
90.pdf
91.pdf
需要从1到291递增,9不应该出现在89与90之间。PowerShell可达目的:
Get-ChildItem *.pdf | Sort-Object {[int]($_.BaseName -replace '\D+')} | ForEach-Object { $_.Name }
Get-ChildItem *.pdf | Sort-Object {[int]($_.BaseName -replace '\D+')} | ForEach-Object { $_.FullName }
在PowerShell中执行如下命令,完成合并、压缩:
Set-Location -Path X:\pdf\
$files = Get-ChildItem *.pdf | Sort-Object {[int]($_.BaseName -replace '\D+')} | ForEach-Object { $_.Name }
& "X:\Green\MuPDF\mutool.exe" merge -o X:\some\all_tmp.pdf $files
& "X:\Green\MuPDF\mutool.exe" clean -gggg -l -z -f -i -c -s X:\some\all_tmp.pdf X:\some\all.pdf
用PowerShell增加了复杂度,Windows版mutool不如其他GUI方案直观方便,只合并几个PDF时还成,待合并PDF较多时,除非"*.pdf"的展开顺序符合预期,否则不推荐Windows版mutool。
☆ 后记
本文只收录了用同一测试样本集实测过的、尚可一用的各种方案,其他方案未收录。
本文面向最终用户,不面向程序员,Python编程方案无优势。
各种方案合并压缩后的大小随软件版本而变化,纯图片PDF、矢量PDF的压缩效果不一样,这些差异不特别强调,假设知道自己在说什么。
有全功能版Acrobat,就不必瞎折腾其他方案了。PDFsam这种属于反面例子。Linux用gs即可,mutool压缩效果不如gs。Windows用户,gs、PDFPatcher、Smallpdf、PDFXEdit随自己喜欢吧,gs正宗,PDFPatcher小巧,Smallpdf傻瓜化,PDFXEdit功能强大。若有选择综合症,就用Smallpdf好了。
若有其他优质方案,欢迎用同一测试样本集实测后反馈,反馈合并后all.pdf的大小、所用软件的下载点及可能需要的破解方案,方便其他网友复用。张嘴就来的就别说了,用指定测试样本集测过再反馈。
测试样本集下载点至少一周内有效:
https://gofile.io/d/S0Z7aV