PDF合并方案(2024.2.29更新)
2024-2-29 12:12:6 Author: mp.weixin.qq.com(查看原文) 阅读量:4 收藏

创建: 2024-02-27 19:51
更新: 2024-02-29 11:33
https://scz.617.cn/misc/202402271951.txt

目录:

☆ 背景介绍
☆ ghostscript
    1For Linux
    2For Windows
☆ PDF24
☆ PDFPatcher(PDF补丁丁)
☆ Smallpdf 1.24.2.0
☆ PDF-XChange Editor Plus (PDFXEdit)
☆ MuPDF
    1For Linux
    2For Windows
☆ 其他讨论
☆ 后记

TXT做了重要更新,新增Windows版gs、PDFXEdit、MuPDF的获取与使用示例。公众号这边只补录新增内容,完整更新直接PC上拖TXT看吧。

前文见

PDF合并方案

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-tools

mutool 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

文章来源: https://mp.weixin.qq.com/s?__biz=MzUzMjQyMDE3Ng==&mid=2247487189&idx=1&sn=f20408197e375900abf42808002548eb&chksm=fab2cdeacdc544fc92ea5faeb024b792978e508e1105cb4aa62f650762cf26281f948011591c&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh