如何解決此 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正確轉換您的文件。也許簡單地使用不存在此問題的原始版本是您唯一的選擇。

相關內容