PDF压缩库/工具

Sab*_*y62 4 compression pdf pdf-conversion

我正在开发一个项目,以减少PDF的大小,压缩它们.我想知道市场上有哪些好的工具/库(.NET)非常好.我确实尝试了一些像Onstream Compression这样的工具,但结果并不令人满意.

use*_*289 5

一些额外的(兆字节)字节很容易被挤出PDF.例如,众所周知的"PDF32000_2008.pdf"是否足够优化?文件大小是8,995,189字节.它使用对象和外部参照流,(几乎)没有图像,一切都紧凑.或者不是吗?

看一下页面词典:

Dict:9 [1 0 R]
.   /Annots Array:3
.   /Contents Stream:3 [2 0 R]
.   /CropBox Array:4
.   /MediaBox Array:4
.   /Parent Dict:4 [124248 0 R]
.   /Resources Dict:4
.   /Rotate 0 (Number)
.   /StructParents 2 (Number)
.   /Type Page (Name)
Run Code Online (Sandbox Code Playgroud)

Rotate 0是默认值,为什么会出现?有什么CropBox用?它默认为MediaBox,而且也没有页本文件中CropBox比其他MediaBox.为什么MediaBox?它是可继承的,所有页面都是相同的大小,所以将它移动到Pages树根!有756页,即冗余(或无用)信息复制756次.

查看典型的Annotation字典:

Dict:6 [3548 0 R]
.   /A Dict:2
.   .   /S URI (Name)
.   .   /URI http://www.iso.org/iso/iso_catalogue/... (String)
.   /Border Array:3
.   .   [0] 0 (Number)
.   .   [1] 0 (Number)
.   .   [2] 0 (Number)
.   /Rect Array:4
.   .   [0] 82.14 (Number)
.   .   [1] 576.8 (Number)
.   .   [2] 137.1 (Number)
.   .   [3] 587.18 (Number)
.   /StructParent 3 (Number)
.   /Subtype Link (Name)
.   /Type Annot (Name)
Run Code Online (Sandbox Code Playgroud)

本文档中有数千个(可能> 10'000?)链接注释./Type键是可选的,为什么会出现?它们是不可见的矩形,你认为除了整点数之外它们的贴装精度是否相关?将其舍入为整数.

查看典型页面内容流的片段,显示运算符的文本:

[(w)7(ed)-6( b)21(u)1(t shal)-6(l no)-6(t b)-6(e)1( ed)-6(ite)-6(d)1( un)-6(less the typef)23(aces wh)-6(ich )]TJ
Run Code Online (Sandbox Code Playgroud)

小于某个值的字距调整几乎是不可见的.这个可能有争议,就像JPEG压缩质量水平 - 一些人可以接受,其他人不同意.我认为非常保守的估计(即保留最高质量),对普通人来说是不可见的,可以省略绝对值小于10的字距.(当然,必须注意保持理由).(我甚至没有提到那里有文件的分数字距调整,精度为3-6位小数!但不在此文件中)

并且,通过上面提到的优化,文件大小变为7,982,478字节.削弱了一兆字节.并且它肯定不是限制,可能还有其他的,更好地隐藏,优化的来源.

  • 我不同意你的意见,但你的回答中有一个*大*谨慎.需要注意的是,这些优化a)需要熟悉PDF规范才能执行,b)对于某些文档而言比其他文档更好(对于大多数图形艺术文档,您的优化将接近0%)和c)(和大多数)重要的是)依靠完美的PDF阅读器,他们能够100%准确地实现规范.如果执行这种优化方式,则需要进行非常彻底的测试. (2认同)