我需要动态生成和压缩大批PDF文件。
我正在考虑通常的算法
欢迎任何其他建议。
我的问题是哪种算法可能会给我最小的文件大小。速度和效率也是重要因素,但尺寸是我最关心的问题。
在每个档案中我是否有许多小文件或更少的大文件也会有所不同。
我的大多数处理都是用PHP完成的,但如果需要,我很乐意与第三方可执行文件进行交互。
修改
这些文件主要是发票,除了公司徽标外,不应包含任何其他图像
答案 0 :(得分:6)
压缩PDF并没有太大成功。正如所指出的,它们在编写时已经被压缩(尽管一些PDF合成工具允许您指定'压缩级别')。如果可能的话,您应该采取的第一种方法是减小合成PDF的大小。
如果将PDF保存在单个文件中,它们可以共享任何公共资源(图像,字体),因此可以显着缩小。请注意,这意味着一个大型PDF文件,而不是一个内部有多个PDF的大型ZIP文件。
根据我的经验,在PDF中压缩图像非常困难,而且图像对文件大小的影响最大。确保在开始之前已经优化了图像。在没有图像的情况下运行测试运行甚至只是为了查看图像的大小。
另一个组件是字体,如果您使用多个嵌入字体,那么您将更多数据打包到文件中。只需使用一种字体来缩小尺寸,或使用通常安装的字体,这样就不需要嵌入它们。
答案 1 :(得分:1)
我认为7z是目前最好的,RAR是第二个,但我建议你尝试两者,找出最适合你的。
答案 2 :(得分:1)
如果您需要最小的文件大小,LZMA是最好的。
当然PDF可以自行压缩。
答案 3 :(得分:1)
我怀疑你会通过压缩PDF来减少/减少文件大小。但是,如果您所做的只是将多个文件合并为一个,为什么不tar
呢?
答案 4 :(得分:1)
我们过去曾为存储大量文本的大型(和许多)PDF文件 - 澳大利亚培训机构培训包。它大约96%的文本(课程信息等)和一些小图表。尺寸从1-2Mb到8或9Mb不等,通常为4或更多。
我们发现使用Zip OK压缩可以获得良好的压缩效果,因为PDF格式已经过大量压缩,我们的用户可以更轻松地将其全部下载,而不用担心文件大小。为了给你一个想法,一个2.31Mb的文件 - 大量的文本,几个完整的页面图 - 压缩到ZIP中的1.92Mb和RAR中的1.90Mb。
我建议使用LZMA来最好地查看压缩和解压缩时的资源使用情况。
这些文件有多大?获取WinRAR,WinAce和7Zip的副本并在之前发布。
答案 5 :(得分:1)
将我漂亮的工具Precomp与7-Zip结合使用。它解压缩PDF中的zLib流,因此7-Zip(或任何其他压缩器)可以更好地处理它们。您将获得大约50%原始大小无损的文件大小。这个工具特别适用于PDF文件,但对于ZIP / GZip / JAR / GIF / PNG等其他压缩(zLib / LZW)流也很好...
对于结果示例,请查看here或here。预压缩(PDF-> PCF)部分的速度可能很慢,但对于再压缩/重建(PCF-> PDF)部分来说速度非常快。
为了获得比使用Precomp + 7-Zip更好的结果,你可以尝试lprepaq和prepaq变体,但要注意,特别是prepq是slooww :) - 好的一面是prepaq提供了当前可用的最佳(PDF)压缩。 / p>