如何避免Ghostscript处理PDF后提取文本出现断词问题?
解决Ghostscript处理PDF后文本被空格拆分的问题
我之前也碰到过这个糟心的情况!用Ghostscript的pdfwrite处理PDF后,不管是用pdftotext提取还是阅读器里选文本,单词总被莫名其妙的空格拆碎,确实和字距(kerning)的处理逻辑有关。下面是几个亲测有效的解决办法:
优先升级Ghostscript版本
这个是最彻底的解决方案。Ghostscript 9.24及之后的版本已经修复了pdfwrite设备处理字距时的bug,不会再把字距位移错误转换成空格。我当时把GS从9.22更到最新稳定版后,这个问题直接消失了。给旧版本添加字距保留参数
如果暂时没法升级,可以在你的GS命令里加上-dPreserveKerning参数,强制设备保留原始的字距信息,避免错误转换。修改后的命令如下:gs -sDEVICE=pdfwrite \ -dNOPAUSE -dQUIET -dPARANOIDSAFER -dBATCH \ -dPreserveKerning \ -sOutputFile=./output.pdf input.pdf尝试使用预定义的PDF设置
要是上面的参数没起作用,试试换成-dPDFSETTINGS=/prepress这个预设,它会保留更多原始PDF的文本属性(包括字距),减少不必要的优化操作。命令示例:gs -sDEVICE=pdfwrite \ -dNOPAUSE -dQUIET -dPARANOIDSAFER -dBATCH \ -dPDFSETTINGS=/prepress \ -sOutputFile=./output.pdf input.pdf
简单说下原因:早期GS的pdfwrite在压缩优化PDF时,会把用于调整字符间距的kerning信息错误解析成空格字符,导致原本连贯的单词被拆成零散的片段。上面的方法要么修复了这个bug,要么强制设备保留正确的字距逻辑,就能解决问题。
内容的提问来源于stack exchange,提问作者user650881
相关产品推荐
相关产品推荐

