Ghostscript - reembed字体

时间:2015-02-27 09:15:04

标签: ghostscript

我想用ghostscript来优化pdf文件。

我的文件是由iText生成的,并且有一种嵌入太多次的字体 - 3000 +;

我想用ghostscript重新编写文档,这将删除所有嵌入文件并仅在文件中嵌入一次。

你知道怎么做吗?

另外一个问题 - ghostscript和ghost4j之间有什么不同吗?

谢谢

1 个答案:

答案 0 :(得分:0)

你最不可能做到这一点。没有看到文件我无法确定,但概率是每个字体作为子集嵌入。也就是说,它只包含一些最初出现在字体中的字形。

因此,如果第一个实例包含,例如a,c,f和g,第二个实例包含b,e和h,则可以看到这两种字体实际上是不同的。

更糟糕的是,文本通常会重新编码,因此字符代码不是您所期望的。在上面的例子中,'a'不具有字符代码0x61('a'的ASCII),它将具有字符代码1.c将是2,f将是3,依此类推。 在第二种情况下,字符代码1为'b',字符代码2为'e'等。

没有简单的方法来重新组合多个字体子集,并且还将每组文本重新编码为“组合”字体。

如果pdfwrite设备检测到多个具有兼容编码的子集字体(所使用的字符代码在每种字体中都是唯一的),它会将它们组合在一起。它不会再尝试重新编码它们,所以如果两种字体使用相同的字符代码(根据我上面的例子),pdfwrite只会发出两种字体。

假设您已经尝试通过pdfwrite运行该文件并且没有得到您想要的结果,那就是它,您无法使用当前代码获得所需的结果。

也许你可以告诉iText不要对字体进行子集化,这样可以在源头解决问题,而不是试图在之后修复它。

相关问题