【问题标题】:Ghostscript pdf to txt extractionGhostscript pdf到txt提取
【发布时间】:2016-01-22 00:49:12
【问题描述】:

我在 windows 上使用 Ghostscript 9.18,并尝试使用 -sDEVICE=txtwrite 从 pdf 文件中提取文本我的命令如下所示:

gswin32c -dBATCH -dNOPAUSE -sDEVICE=txtwrite -dFirstPage=1 -dLastPage=1 -sOutputFile=test.txt test.pdf -c quit

但我总是得到“找不到“ArialBlack”的 CID 我试图通过写入字体映射文件来提供 cid:

/Arial << /FileType /TrueType /Path (c:\windows\fonts\arial.ttf) /SubfontID 0 /CSI [(Identity) 0] >> ;
/ArialBlack << /FileType /TrueType /Path (c:\windows\fonts\arial.ttf) /SubfontID 0 /CSI [(Identity) 0] >> ;

但它似乎没有看到条目,仍然要求 cids。我知道几个版本之前,字体映射只是一个文件,但开发人员将它移到了库中。 当我使用 -sDEVICE=png16m 时,它可以正常读取 pdf,并打印具有良好字符的 bmp。

也许有人知道答案?

【问题讨论】:

  • 这是有道理的,因为带有 TTF 数据的 OpenType,名为 .ttf,没有 CID(只有过时的 Type1 和带有 CFF 数据的现代 OpenType 字体,可以使用 CID)所以这并不奇怪。您在问题中给出的错误消息的快速谷歌给了我experts-exchange.com/OS/Linux/Distributions/Q_26364031.html,它说您需要安装corefonts.sourceforge.net - 您是否先搜索了网络? make it unnecessary 的点击次数足以在这里提出这个问题。
  • 这并不完全正确。类型 1 字体和 CFF(类型 2 字体)都不使用 CID,它们使用字符代码。 CID 仅与 CIDFonts 相关。 CIDFonts 可能有 type 1 或 CFF bsae 字体,但它们也可能有 type 42 基本字体,本质上是 TrueType 轮廓。所以带有 TTF 轮廓的 CIDFont 仍然可以使用 CID。

标签: pdf fonts ghostscript text-extraction


【解决方案1】:

一段时间以来,Ghostscript 的 Windows 版本默认将支持文件包含在 ROM 文件系统中,即作为二进制可执行文件的一部分。

如果您需要在磁盘外部添加支持文件(即您想修改它们),您可以从我们的 Git 存储库获取支持文件。

字体映射和 CIDFmap 文件可以使用 -I(包含路径)开关来包含。

请注意,CID 与 CIDFont 不同。 CIDFOnt 使用 CID,它不是“CID”,术语在这里很重要。在我看来,Ghostscript 可能会告诉您它找不到 CIDFont,而不是 CID。

听起来您的 PDF 文件使用了 CIDFont 但没有嵌入它,这是一种非常糟糕的做法,可能会导致呈现问题。在 txtwrite 的情况下,它很可能也无法有效地提取文本。

【讨论】:

  • 你是完全正确的,这就是我试图包含并解析它的原因。我试试,谢谢。
猜你喜欢
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
  • 2012-06-26
  • 1970-01-01
相关资源
最近更新 更多