Optimization 如何优化PDF文件大小?
我有一个输入PDF文件(通常,但并不总是由pdfTeX生成),我想将其转换为输出PDF,它在视觉上是等效的(无论分辨率如何),它具有相同的元数据(Unicode文本信息、超链接、大纲等),但文件大小尽可能小 我知道以下方法:Optimization 如何优化PDF文件大小?,optimization,pdf,size,Optimization,Pdf,Size,我有一个输入PDF文件(通常,但并不总是由pdfTeX生成),我想将其转换为输出PDF,它在视觉上是等效的(无论分辨率如何),它具有相同的元数据(Unicode文本信息、超链接、大纲等),但文件大小尽可能小 我知道以下方法: java-cp Multivalent.jar tool.pdf.Compress input.pdf(来自)。这将重新压缩所有流、删除未使用的对象、统一等效对象、压缩空白、删除默认值、压缩交叉引用表 使用jbig2和PNGOUT重新压缩合适的图像 将Type1字体重新编
(来自)。这将重新压缩所有流、删除未使用的对象、统一等效对象、压缩空白、删除默认值、压缩交叉引用表java-cp Multivalent.jar tool.pdf.Compress input.pdf
- 使用jbig2和PNGOUT重新压缩合适的图像
- 将Type1字体重新编码为CFF字体
- 统一等效图像
- 将同一字体的子集统一为更大的子集
- 删除可填充表格
- 提取或以其他方式转换时(例如,gs-sDEVICE=pdfwrite),确保不会降低图像质量,也不会增加图像大小(!)
- 使用更小和/或更少的字体
- 使用矢量图像代替位图图像
请参见PDF规范1.5版中的两种新的压缩方法,对象流和交叉引用流 您提到,
Multivalent.jar
compress工具压缩交叉引用表。这通常意味着交叉引用表被转换成流,然后被压缩
此交叉引用流的格式不是固定的。您可以更改三列数据的位大小。还可以使用预测器函数预处理流数据,这将提高数据的压缩级别。如果使用文本编辑器查看PDF内部,您可能会在交叉引用流字典中找到/Predictor
条目,以检查您使用的工具是否利用了此功能
在压缩过程中使用预测器可能对图像也很方便
提供的第二种压缩类型是使用对象流
在PDF中,通常有许多类似的对象。现在可以将这些对象组合成单个对象,然后进行压缩。Multivalent Compress工具的文档提到使用了对象流,但没有关于将哪些对象组合在一起的实际选择的很多细节。如果将相似的对象组合到一个对象流中,压缩效果会更好。+1投票。谢谢你的链接和摘录。虽然它没有帮助我将pdf变得更小(它提到的所有技术都在使用中或不适用于我的案例),但它提供了一个很好的视角。当前的multivalent:现在缺少tool.pdf.Compress类。此处对此进行了描述:。您知道有什么好的替换工具吗?Arch Linux中存在较旧的多价版本: