我有一个pdf文件,其文本显然可以正确显示,但在文件外部搜索或复制并粘贴文本时则无法正确显示。例如,“外部交通”。复制并粘贴到外部
2D/28:93 /89:4758/9/.5:
我创建了 pdf 文件pdf 文件的原始版本其工作正常,通过
gs -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile=example.pdf original.pdf
该命令是我修复pdf文件中各种问题(尤其是在Windows上创建的pdf文件中的字体问题)的常用方法。
- 为什么该命令会产生问题?作为解决 pdf 问题的一般方法,我该如何更改命令?
- 如何修复pdf文件的当前版本,以便可以在外部搜索并复制粘贴正确的文本?我实际上有兴趣修复的文件是以相同的方式创建的,并进行了额外的修改。我想修复它,这样我就可以保留修改。
谢谢。
答案1
我在 Stack Overflow 上阅读了一些文章并发表了一些有用的帖子(1,2,3)似乎表明问题出在 PDF 文件中嵌入的特定字体。您的原始文件使用这些字体:
$ pdffonts original.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
KPSHBO+Wingdings TrueType Custom yes yes no 5 0
KNQZHK+Arial TrueType Custom yes yes no 9 0
YLWHHJ+TimesNewRoman TrueType Custom yes yes no 13 0
HWNDJR+ArialBlack TrueType Custom yes yes no 17 0
QQRMEC+TimesNewRoman,Bold TrueType Custom yes yes no 21 0
我猜测(但不确定)该问题很可能是由 Wingdings 字体引起的。想必您的系统上没有它。至少,在列出的字体中,这是我唯一找不到的字体:
$ fc-list | grep -f <(pdffonts original.pdf | grep -oP '\+\K[A-Z][a-z]+') | awk '{print $1}'
/usr/share/fonts/TTF/times.ttf:
/usr/share/fonts/TTF/arialbd.ttf:
/usr/share/fonts/TTF/ariblk.ttf:
/usr/share/fonts/TTF/arialbi.ttf:
/usr/share/fonts/TTF/ariali.ttf:
/usr/share/fonts/TTF/timesi.ttf:
/usr/share/fonts/TTF/timesbd.ttf:
/usr/share/fonts/TTF/timesbi.ttf:
/usr/share/fonts/TTF/arial.ttf:
不幸的是,我尝试从下载 Wingdings 字体这里,然后运行:
unzip wingdings.zip
sudo cp Wingdings\ Regular.ttf /usr/share/fonts/TTF/Wingdings.ttf
fc-cache
应该已经安装了字体,但该gs
命令仍然不起作用。所以也许gs
'spdfwrite
根本无法处理这种字体。所以我不知道是否有办法gs
正确转换您的文件。也许简单地使用不存在此问题的原始版本是您唯一的选择。