如何使用ghostscript更改类型3字体?

时间:2016-10-14 12:53:04

标签: pdf pdf-generation itext ghostscript postscript

我有一个包含Type 3 Font的postscript文件。在使用" gs"将该postscript转换为pdf之后命令,我无法从pdf文件中提取文本。是否有可能避免将Type 3字体更改为其他字体,通过替换或其他方式,以便我可以复制文本?

1 个答案:

答案 0 :(得分:1)

这是另一种关于3型字体的误解。字体是类型3字体的事实与使用该字体的PostScript程序或PDF文件是否为“searchab; e”无关。

PostScript和PDF中的字体有一个“编码”,它将字符代码0-255映射到字体中的命名过程。执行该过程绘制字形。字符代码可以是任何字符代码,但通常(对于拉丁字体)选择与ASCII编码匹配。

PDF具有ToUnicode CMap的附加概念,附加信息将字体中的字符代码映射到Unicode代码点。 PostScript没有这样的模拟,这不是PostScript的用途(它也不是PDF最初的用途,这就是为什么ToUnicode CMaps是PDF标准的后续版本)。

在没有ToUnicode CMap的情况下,Acrobat使用未记录的启发式方法来尝试猜测文本是什么。显而易见的(也是我们唯一知道的)是它将字符代码视为ASCII。

现在,如果您的原始PostScript程序具有映射字符代码的编码,就好像它们是ASCII<然后,如果您没有对字体进行子集化,则生成的PDF文件也应包含ASCII字符代码。如果您对字体进行了子集化,则pdfwrite设备将对字形进行重新排序,字符代码将不再是ASCII。

如果您的原始PostScirpt文件没有使用ASCII字符代码对字体中的字形进行排序,那么除了应用OCR之外没有其他任何操作,信息根本就不存在。

但是忘记改变字体类型,不仅不可能,这不是问题。