如何解决此 pdf 文件的字体问题?

如何解决此 pdf 文件的字体问题?

我有一个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文件中的字体问题)的常用方法。

  1. 为什么该命令会产生问题?作为解决 pdf 问题的一般方法,我该如何更改命令?
  2. 如何修复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正确转换您的文件。也许简单地使用不存在此问题的原始版本是您唯一的选择。

相关内容