文档压缩技巧(尤其是 PDF 和 EPUB)[关闭]
Posted
技术标签:
【中文标题】文档压缩技巧(尤其是 PDF 和 EPUB)[关闭]【英文标题】:Tips on document compression (PDF and EPUB in particular) [closed] 【发布时间】:2022-01-22 08:32:03 【问题描述】:正如标题所说,我正在寻找一些关于如何压缩 PDF 和 EPUB 文档的技巧。我有大量的文档(pdf 和 epub)和静态图形(png、jpeg、webp)数据集,我正在尝试压缩(最好是无损)。至于图像,我有一个脚本可以无损地平均减少大约 15% 的大小,并且正在考虑使用相同的工具来减小文档的大小,因为它们的大部分大小是由图像引起的。我的 epub 方法有点简单,因为它们基本上是 zip 文件:我提取内容,重新编码图像,然后以最高压缩设置压缩其余部分。麻烦来自pdf,因为我从未使用过它们,而且它们不像epub那么简单。 所以我的问题是:有什么方法可以简单地从 pdf 中提取图像并在处理它们后将它们放回去而不会弄乱一些内部结构?或者也许我的方法太麻烦了,有更好的工具来完成 pdf(甚至 epub)的压缩工作。非常感谢任何提示, 谢谢!
【问题讨论】:
【参考方案1】:重新压缩压缩的 PDF 绝不是一个好主意,因为如果它们的位图被正确地 zip 压缩,你只能通过将分辨率减半来降低到 25% 或更小,比如 Acrobat 可能会将它们从 150 ppi 降低到 72 或 75 ppi。
每个来源的做法都不同,因此有些来源可能会通过更好的通货紧缩自然而进一步压缩。最严重的违规者通常会被严重压缩为 j2K,在这种情况下,重新压缩通常会更好地增加文件大小。
您看到的图像可能只是带有蒙版的源图像的一部分,因此提取、裁剪和重新压缩可以最大限度地减少存储而不会降级。
这是 zip 中像素数和分辨率完全相同的两张相似图像,但由于 png 已经是 zip 编码,因此无法无损压缩。
我承认我有点作弊,因为我使 png 颜色范围小于 jpeg,并且通常使用 alpha,否则您可能会看到其他情况,但对于 PDF,当色域减少时,png 会更好,那么在 PDF 中呢?
当然,PDF 会比 zip 大,因为 PDF 附带的所有开销,zip 为 422 KB,PDF 为 531 KB,因此更大。
您可以尝试在不同的设置下进行 IlovePDF 压缩,看看您可以接受多少降级,但请记住,过度压缩的惩罚是 jpeg 8x8 像素块,如果扫描会出现“光晕文本”等伪影,并且页面上的解压缩时间会严重增加到页面或首次打开时间(如果是彩色照片)。
因此,使用中等(良好)在线压缩会对无损 png 产生什么影响,文件大小会急剧下降,但质量也不再是无损的。
基于图像的文本页面的最佳选择是将大多数页面上的色域降低到 4 位灰度 PNG,具体取决于内容,但如果某些内容涉及颜色,这在通用文件的基础上并不容易页面。
对于有关结构的查询,由于 PDF 是十进制索引对象的随机集合,自然它们需要与源完全不同的方式重建,因为原地替换通常是有问题的,除非通过专用的 PDF 库命令完成.
正如你所说的 ePub 非常简单,解压缩 > 通过脚本转换图像并重新压缩,所有这些都可以在 windows 命令行中使用 tar、vbs 和 mspaint 完成。
【讨论】:
感谢您的建议!真的希望有一种方法可以解压和重新打包 pdf 文件。告诉我,你听说过ghostscript吗?我已经看到它推荐用于 pdf 优化。【参考方案2】:您可以尝试使用带有optimize command 的 HexaPDF 命令行工具,例如hexapdf optimize input.pdf output.pdf
(还有一个批处理模式可以一次优化多个文件,例如hexapdf batch "optimize output_" *.pdf
)。这将无损压缩 PDF,并且可以根据 PDF 的创建方式稍微减小文件大小。也可以试试--compress-pages
,但这需要很长时间。
JPEG 图像可以或多或少地直接嵌入到 PDF 和 PNG 中(即 PDF 和 PNG 使用相同类型的无损压缩)。因此,可以编写一个脚本,例如,从 PDF 中提取 JPEG 图像,对其进行一些无损转换(即不改变大小、颜色空间等),然后嵌入优化的 JPEG。可以对类似 PNG 的图像执行类似的操作。
【讨论】:
刚试了一下,结果似乎还算合理。谢谢!以上是关于文档压缩技巧(尤其是 PDF 和 EPUB)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章