压缩/优化PDF格式的向量

时间:2012-01-06 08:48:11

标签: pdf pdf-generation

我有扫描书的PDF,图像是JBIG2格式(B& W)。我想将其转换为矢量PDF,我可以通过提取图像并将其转换为使用potrace的PDF矢量图形指令轻松完成。

这样做的原因是我希望PDF能够在电子书阅读器设备(如Kindle)上流畅而快速地显示。对于JBIG2,它并没有做得很好。根据设置,Kindle无法显示PDF,即使修复了这一点,渲染每个页面也需要很长时间。使用矢量PDF,性能更好,渲染非常清晰。

问题是生成的PDF在文件大小中是巨大的。即使流gz压缩到最大,每页300KB(原始JBIG2图像每页30KB)。

有没有什么方法可以优化矢量图形,以便文件大小更少?

以下是矢量绘图说明的一部分:

0.100000 0.000000 0.000000 0.100000 0.000000 0.000000 cm
0 g
8277 29404 m
8263 29390 8270 29370 8289 29370 c
8335 29370 8340 29361 8340 29284 c
8340 29220 8338 29210 8323 29210 c
8194 29207 8141 29208 8132 29214 c
8125 29218 8120 29248 8120 29289 c
8120 29356 8121 29358 8150 29370 c
8201 29391 8184 29400 8095 29400 c
8004 29400 7986 29388 8033 29357 c
8056 29342 8057 29338 8057 29180 c
8058 29018 l
8029 29008 l
8012 29002 8001 28993 8003 28986 c
h
f

我原以为这些数字很容易被压缩,但显然不是。一页是800KB未压缩(如上所述)和300KB gz压缩。考虑到指令是如何在相似范围内的所有数字,我会认为压缩比可以更好。

1 个答案:

答案 0 :(得分:1)

恐怕没有什么可以做的。

当然,您可能会尝试在PDF页面流(而不是Deflate)上使用LZW压缩,但它可能没有太大区别。

另一个建议:

  • 尽可能平滑源图像/删除尽可能多的细节。这可能会在转换过程中呈现更少的曲线(即更少的数据)。
  • 尝试优化PDF页面流中的值。例如,您可能尝试使用缩放/转换运算符的复杂组合以及对数据的更改。这里的目标是减少操作数的长度。

例如,您可能尝试将所有操作数(使用整数,而不是浮点除法)除以100,并在第一个运算符之前添加缩放。但这种方法很可能会降低视觉质量。

当然,如果你打算只对少量文件这样做,那么我会说它不值得花时间。