我需要将大约 100 个 PDF 文件合并为一个,每个文件使用的内容大致相同未子集字体。到目前为止,我尝试过的所有选项(pdfunite
、gs
等)在字体复制方面都不是智能的,合并后的 PDF 最终会得到 100 份相同字体的副本,因此比需要的要大得多。
有没有办法做以下任何一件事:
- 合并 PDF 而不重复字体?
- 稍后对 PDF 中的字体进行重复删除?
- 从 PDF 中完全删除字体?
理想的解决方案将具有商业友好的开源许可证(例如非 APGL)。
答案1
与您所说的相反,Ghostscript 的最新版本在将多个 PDF 合并为一个 PDF 时变得非常高效,同时避免多次嵌入相同的字体。
输入
以下是 3 个输入 PDF 的详细信息,我将它们合并为一个输出:
对于 {1..3} 中的 i;执行 pdffonts ${i}.pdf;回显;完成 名称类型编码 emb sub uni 对象 ID -------------------------- ----------------- ---------------- --- --- --- --------- Helvetica Type 1C WinAnsi 是 否 否 8 0 名称类型编码 emb sub uni 对象 ID -------------------------- ----------------- ---------------- --- --- --- --------- Helvetica Type 1C WinAnsi 是 否 否 8 0 名称类型编码 emb sub uni 对象 ID -------------------------- ----------------- ---------------- --- --- --- --------- Helvetica Type 1C WinAnsi 是 否 否 8 0
合并
现在借助 合并这三个 PDF 输入文件pdftk
。
pdftk 1.pdf 2.pdf 3.pdf cat 输出合并.pdf
输出
现在检查输出的字体状态合并.pdf:
pdffonts 合并.pdf 名称类型编码 emb sub uni 对象 ID -------------------------- ----------------- ---------------- --- --- --- --------- Helvetica Type 1C WinAnsi 是 否 否 5 0 Helvetica Type 1C WinAnsi 是 否 否 14 0 Helvetica Type 1C WinAnsi 是 否 否 23 0
好的,还没有到...
使用 Ghostscript 进行优化
gs -o optim.pdf -sDEVICE=pdfwrite merged.pdf GPL Ghostscript GIT 预发布版 9.27(2018-11-20) 版权所有 (C) 2018 Artifex Software, Inc. 保留所有权利。 该软件不附带任何担保:请参阅 PUBLIC 文件了解详细信息。 正在处理第 1 页至第 3 页。 第 1 页 第2页 第 3 页
检查字体状态和文件大小
ls -lh {1..3}.pdf 合并.pdf 优化.pdf -rw-r--r-- 1 kurtpfeifle 员工 51K 12 月 31 日 20:25 1.pdf -rw-r--r-- 1 kurtpfeifle 员工 51K 12 月 31 日 20:25 2.pdf -rw-r--r-- 1 kurtpfeifle 员工 51K 12 月 31 日 20:25 3.pdf -rw-r--r-- 1 kurtpfeifle 员工 147K 12 月 31 日 20:32 合并.pdf -rw-r--r-- 1 kurtpfeifle 员工 7.5K 12 月 31 日 20:34 optim.pdf
结论
我使用 Ghostscript v9.25 对此进行了测试。
如果这对您不起作用,您需要...
- ...告诉我们您正在使用的 Ghostscript 版本;
- ...提供(部分)输入 PDF 的链接,以便进行更详细的分析。
我知道这个答案不能为您提供完全满足您的许可要求的解决方案。 - 但是您关于 Ghostscript 的错误陈述促使我无论如何都给出这个答案,因此其他对这个主题感兴趣的人仍然可以从中受益......