我在windows上使用Ghostscript 9.18,并尝试使用-sDEVICE=txtwrite从pdf文件中提取文本。我的命令看起来像这样:
gswin32c -dBATCH -dNOPAUSE -sDEVICE=txtwrite -dFirstPage=1 -dLastPage=1 -sOutputFile=test.txt test.pdf -c quit
但是我总是得到"Can't find CID for "ArialBlack"我试图通过写入字体映射文件来提供cid:
/Arial << /FileType /TrueType /Path (c:windowsfontsarial.ttf) /SubfontID 0 /CSI [(Identity) 0] >> ;
/ArialBlack << /FileType /TrueType /Path (c:windowsfontsarial.ttf) /SubfontID 0 /CSI [(Identity) 0] >> ;
但它似乎没有看到条目,仍然要求cid。我知道几个版本之前,字体地图只是一个文件,但开发人员将其移到了库中。当我使用-sDEVICE=png16m时,它可以正常读取pdf,并打印具有良好字符的bmp。
也许有人知道答案?
Windows版本的Ghostscript默认在ROM文件系统中包含支持文件,即作为二进制可执行文件的一部分。
你可以从我们的Git仓库中获得支持文件,如果你需要将它们添加到外部磁盘上(即你想修改它们)。
可以使用-I (include path)开关包含fontmap和CIDFmap文件。
请注意CID与CIDFont不一样。CIDFOnt 使用一个CID,它不是一个'CID',术语在这里很重要。在我看来,Ghostscript可能会告诉你它无法定位CIDFont,而不是CID。
听起来你的PDF文件使用CIDFont,但没有嵌入它,这是一个非常糟糕的做法,可能会导致渲染问题。在textwrite的情况下,它很可能使它无法有效地提取文本。