Sab*_*y62 4 compression pdf pdf-conversion
我正在开发一个项目,以减少PDF的大小,压缩它们.我想知道市场上有哪些好的工具/库(.NET)非常好.我确实尝试了一些像Onstream Compression这样的工具,但结果并不令人满意.
一些额外的(兆字节)字节很容易被挤出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字节.削弱了一兆字节.并且它肯定不是限制,可能还有其他的,更好地隐藏,优化的来源.