【问题标题】:How can I change type 3 font using ghostscript?如何使用 ghostscript 更改 type 3 字体?
【发布时间】:2017-02-23 21:59:41
【问题描述】:

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

【问题讨论】:

  • 为什么这个问题被标记为 iText 问题?您是否使用 iText 这个名称作为 PDF 软件的总称?

标签: pdf pdf-generation itext ghostscript postscript


【解决方案1】:

这是对 type 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 的编码

如果您的原始 PostScirpt 文件没有使用 ASCII 字符代码对字体中的字形进行排序,那么除了应用 OCR 之外您无能为力,信息根本不存在。

但是忘记更改字体类型,不仅不可能,而且不是问题。

【讨论】:

  • 嗨@KenS,感谢您的回复。但我只想知道如何使用ghostscript替换pdf中的3型字体。
  • 这很简单,你不能。
  • Hi@Kens,如果我使用“pdftotext”命令将该 pdf 转换为文本,它会提供正确的内容。ghostscript 如何在内部处理它?。在将 ps 转换为 pdf 时我们不能做任何事情?
  • 我对你的观点感到困惑。如果 pdftotext 可以从 PDF 中生成可行的文本,那么您的原始陈述“我无法从 pdf 文件中提取文本”似乎不正确。我也看不出 PostScript 适合这个。也许如果你能更清楚地解释你在盯着什么,你希望达到什么,我们可能会走得更远。示例文件可能会有所帮助,如果合适,还可以使用 Ghostscript 命令行(以及正在使用的版本和操作系统)
猜你喜欢
  • 2016-07-03
  • 2011-01-06
  • 2018-07-11
  • 2020-09-21
  • 2020-07-10
  • 2019-03-23
  • 1970-01-01
  • 2021-02-11
  • 1970-01-01
相关资源
最近更新 更多