如何使用某些库将斜体字体转换为PDF中的普通字体



是否有任何方法可以使用某些库,例如ImageMagick或Ghostscript等,将PDF中的Bold字体转换为正常字体。?

基本上答案是'no',尽管其中有几个级别。

PDF文件最常见的方案是它包含嵌入式字体,该字体为子集。在这种情况下,字体将使用自定义编码,因此当您在显示器上看到" Hello"时,实际的字符代码可能为" Axtte"或类似的Gibberish。如果字体还包含一个Tounicode表,从技术上讲,您可以从与Bold或Italic的同一家族中创建一个常规字体的嵌入式子集,并将其嵌入该表,并且它将起作用。这将是大量的工作。

如果字体不是子集,则可能不包含自定义编码,这将使该任务更容易,因为您不必重新编码替换。

如果字体未嵌入,则只需要更改字体对象中的字体名称,因为PDF消费者无论如何都必须找到替代品。

请注意,由于PDF是一种二进制格式,带有索引(XREF)包含文件中每个对象的偏移,因此任何更改都意味着必须重建Xref表,再次是一项相当大的任务。

我不知道有什么工具会自动为您做任何事情,您必须自己编写,尽管可以自动完成一些事情。例如,mupdf将"修复"一个PDF文件,该文件的XREF表不正确。

,即使毕竟,与常规字体相比,斜体或粗体字体的间距会有所不同,如果您用常规字体替换它们,则看起来很奇特。

因此,从根本上讲,no。

在低级PDF中,您可以在文本流的前面应用一些渲染标志。就像"渲染模式" Tr操作。例如,在这种情况下,您可以使用命令序列0.4 w 2 Tr包括文本大纲的渲染和增加轮廓绘图宽度,这将导致正常文本变得更加"大胆"(还有其他更好的方法可以使用字体说明词语来完成此操作)。但是,人们还可以使用这种策略使用更厚的轮廓来减少大胆的文本,但这可能不是理想的。

至于斜体,大多数字体都包含指示其斜体角的度量,您可以使用它使用剪切CTM转换矩阵添加人造斜体,并使用cm操作。再一次,这可能会更好地添加斜体剪切,但在删除它方面也可能有些成功。

请参阅PDF参考。

这将需要一个具有较低级别PDF建筑物的库,您必须手动进行,但是从技术上讲是可能的。

最新更新