【发布时间】:2017-06-10 15:35:19
【问题描述】:
我有一个由 Ghostscript 8.15 生成的 pdf。我需要从我的软件中处理这个 pdf,从 pdf 文件中提取字体名称,然后执行一些操作。但是当我从这个 pdf 文件中提取字体名称时,这些名称与应有的不同。例如:原始字体名称为“NOORIN05”,但 pdf 文件包含“TTE25A5F90t00”。如何将这些字体名称解码为原始名称。所有字体均为 TTF。
注意: 为什么我需要提取字体。 实际上有一个名为InPage的软件,在印度和巴基斯坦最有名,可以用乌尔都语编写文件,因为在文字处理器支持unicode之前,这是在计算机上输入乌尔都语的唯一解决方案。由于乌尔都语的复杂性,本软件使用了 89 种字体文件,命名为 NOORIN01 到 NOORIN89。使用太多字体文件的原因是包含所有超过 19000 的乌尔都语连字。因为每个文件只能包含 255 个连字,所以这就是他们在 unicode 之前使用这种技术的原因。现在复制并粘贴此软件生成的 pdf 文件中的文本,导致 MS Word 中出现垃圾。上面89个字体文件我讲的原因。所以没有办法从这种旧的 pdf 文件中提取文本。 (现在这个软件支持 unicode,但我说的是旧文件)。所以我用 C# 开发了一个软件来从这些旧的 pdf 文件中提取文本。我正在使用的算法创建一个数据库文件,其中包含 89 个字体文件的所有名称以及所有 aschii 代码,然后在下一列中,我在 unicode 中键入了 Urdu unicode ligature。我用字体逐个字符处理pdf文件,匹配我的数据库文件中的字体名称并从数据库中获取unicode连字,然后显示在文本框中。所以通过这种方式,我成功地得到了 unicode 文本。我的软件在许多 pdf 文件中运行良好。但是几天前,我收到一个人的投诉,称您的软件无法从该 pdf 中提取文本。当我测试时,我发现 pdf 文件不包含原始字体名称,所以这就是我的软件无法进行进一步处理的原因。当我检查这个 pdf 文件的属性时,它显示了 PDF 生产者 GPL Ghostscript 8.15。所以我在网上搜索并研究了与字体相关的文档,但仍然找不到任何线索来解码和获取原始字体名称。
【问题讨论】:
-
通常不需要 PDF 处理器来保持字体名称不变。因此,您根本无法保证您可以通过字体名称正确识别字符。句号。话虽如此,您当然可以做更多的事情来识别有问题的字形,而不仅仅是比较字体名称(这毕竟是微不足道的)。例如。您可以简单地将字体程序中的字形说明与您从其他文档中了解的有关字形的说明进行比较。
标签: pdf ghostscript