【问题标题】:How can get original font names from PDF generated by Ghostscript?如何从 Ghostscript 生成的 PDF 中获取原始字体名称?
【发布时间】: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


【解决方案1】:

您应该做的第一件事是尝试更新版本的 Ghostscript。 8.16已经14岁了.....当前版本是9.21。

如果没有保留原始名称(可能包括通常的子集前缀),那么我们需要查看一个显示问题的示例输入文件。

如果您要解释为什么需要提取字体名称,这也可能会有所帮助,可能您正在尝试一些根本不可能的事情。

[编辑}

好的,现在我明白了问题所在,恐怕您的问题的答案是“您无法获得原始字体名称”。

PDF 文件是根据(Adobe 创建的)Windows PostScript 打印机驱动程序的输出创建的。当将 TrueType 字体作为 42 型字体嵌入 PostScript 流时,它会为它们提供一个伪随机名称,该名称由“TT”和一些看起来像十六进制但实际上不是的附加字符组成。

Ghostscript pdfwrite 设备的旧版本(并且 8.15 是非常旧的)只是逐字使用该名称,这就是您提供的 PDF 文件中的字体名称所使用的名称。

较新的版本能够进一步挖掘字体并获取 PostScript 中存在的原始字体名称。不幸的是,旧版本没有保留这一点。一旦你把信息扔掉了,就没有办法再把它找回来了。

因此,如果您只有这个 PDF 文件,那么根本无法恢复字体名称。如果向您提供 PDF 文件的人可以使用更新版本的 Ghostscript 重新制作它,那么它将起作用。但我认为他们没有用于创建 14 年前文件的 PostScript 程序。

【讨论】:

  • 感谢 KenS 的友好回复。这是此 pdf 文件的链接。 my pdf file我需要提取字体名称的原因,我编辑了我的问题并在我的问题末尾详细解释了,因为由于cmets中的字符限制较少,我无法在这里解释。谢谢。
  • 因此,如果您只有这个 PDF 文件,那么根本无法恢复字体名称。 - 好吧,名称信息已经消失但仍有嵌入的字体文件。 OP 可以提取它们并将其中的信息(直至实际的绘图说明)与他从其他 PDF 中获得的信息进行比较。如果来自嵌入字体的信息与这 89 种基本字体中的一种完全匹配,那么他已经识别了它......
  • 没错,但这不是问题 :-)
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多