社会人からAI・ロボットの研究を始めました

大学数学のまとめや研究活動に関することを書いています

PDFファイルのフォント埋め込み(Ubuntu)

結論

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dEmbedAllFonts=true -sOutputFile=embedded.pdf -f original.pdf

original.pdfを元ファイル名、embedded.pdfをフォント埋め込み後のファイル名に適宜変更してください。

背景

学会論文を提出する際にErrors: Font TimesNewRomanPS-BoldMT, TimesNewRomanPSMT is not embeddedと怒られてしまった。
おそらく論文の図をパワポで作ったからだと思われる。

TeXでdvipdfで出力するときにオプション付けたりもできるらしいが、今回はすでに出力されたpdfファイルを変換する。

事前準備

ghostscriptが入っていない場合は

sudo apt install ghostscript

pdffontsが入っていない場合は

sudo apt install poppler-utils

ただしpdffontsは埋め込まれたかの確認用なので、なくてもOK。

埋め込み手順

フォント埋め込み状況の確認

pdffonts original.pdf

を実行すると

name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
GELBXE+NimbusRomNo9L-Medi            Type 1C           Custom           yes yes yes    341  0
DDLXOL+NimbusRomNo9L-Regu            Type 1C           Custom           yes yes yes    342  0
TXYIJJ+NimbusMonL-Regu               Type 1C           Custom           yes yes yes    343  0
FRSSJB+NimbusRomNo9L-ReguItal        Type 1C           Custom           yes yes yes    344  0
VGWMDO+CMMI9                         Type 1C           Builtin          yes yes yes    345  0
SJUFKT+CMMI6                         Type 1C           Builtin          yes yes yes    346  0
TimesNewRomanPS-BoldMT               TrueType          WinAnsi          no  no  no     147  0
BCDEEE+CambriaMath                   CID TrueType      Identity-H       yes yes yes    150  0
...

のように出力される。embがnoになっているものが埋め込みされていないもの。

フォント埋め込み

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dEmbedAllFonts=true -sOutputFile=embedded.pdf -f original.pdf
pdffonts embedded.pdf

と実行してoriginal.pdfでembがnoになっていたものがyesになっていればOK。

そもそもの防止策

パワポで図を作った時はフォント埋め込みをしたうえでpdf出力するか、pdfではなくてpngとかで保存するのがいいかもしれない。

参考

https://iwiwi.hatenablog.com/entry/20120125/1327473584
https://qiita.com/m4saka/items/5a22e283e24406c1eca2