【问题标题】:Compressing/Optimizing Vectors in PDF压缩/优化 PDF 中的矢量
【发布时间】:2012-01-06 08:48:11
【问题描述】:

我有一个 PDF 扫描书,图像为 JBIG2 格式(黑白)。我想将其转换为矢量 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 gzcompressed。考虑到指令都是相似范围内的数字,我原以为压缩比会好得多。

【问题讨论】:

  • 您是否尝试在 CCITT-G4 中重新保存图像?它最终应该比 JBIG 大 10-15%,并且所有观众都可以轻松观看。

标签: pdf pdf-generation


【解决方案1】:

恐怕对此无能为力。

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

其他建议:

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

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

当然,如果您只想对少数几个文件执行此操作,那么我会说不值得花时间。

【讨论】:

  • 不仅仅是几个文件,但是,我明白你的意思。 LZW 的表现甚至比 Deflate 还要糟糕。我的另一个选择是将它的图像分割成段并尝试检测相似性,有效地实现我自己的符号编码,使用表单 xobjects。我以前做过类似的事情,但有些地方往往会出错。
猜你喜欢
  • 2017-04-15
  • 2011-12-14
  • 1970-01-01
  • 2016-02-11
  • 2018-08-19
  • 2011-03-08
  • 1970-01-01
  • 2019-10-06
相关资源
最近更新 更多