はじめに
今回のオーダーはPDFファイルのプレビュー画像をよしなに生成しろとのこと。
imagemagickを使う方法もあったのですがサーバ負荷が高いのでXPDFを利用。
実作業
https://texwiki.texjp.org/?Xpdf
この辺に従う。今回も開発環境はamazon lightsailにamazon linuxを入れたものなので、
https://www.xpdfreader.com/download.html
Xpdf command line tools というの(ファイル名がxpdf-tools-linux-x.xx.tar.gzとか)をwgetして展開してインストール。
よしなに配置されると、
pdftopng pdfファイル 出力先フォルダ
このようなコマンドを流すと、画像が生成されます。
現象発生
されるんだが…いざ画像を開いたら、豆腐のように真っ白。
裏を取ってみると、
Config Error: No display font for 'Courier' Config Error: No display font for 'Courier-Bold' Config Error: No display font for 'Courier-BoldOblique' Config Error: No display font for 'Courier-Oblique' Config Error: No display font for 'Helvetica' Config Error: No display font for 'Helvetica-Bold' Config Error: No display font for 'Helvetica-BoldOblique' Config Error: No display font for 'Times-Bold' Config Error: No display font for 'Times-BoldItalic' Config Error: No display font for 'Times-Italic' Config Error: No display font for 'Times-Roman'
このように叱られていました。
Configとは誰だ。調べてみます。
検証
先程wgetして展開したxpdf-tools-linux-x.xxとかいうフォルダのdocフォルダ内にいる
sample-xpdfrc
このファイルによると…
# Sample xpdfrc file # # The Xpdf tools look for a config file in two places: # 1. ~/.xpdfrc # 2. in a system-wide directory, typically /usr/local/etc/xpdfrc
どちらかのフォルダに記述しないとならないようです。ならば
cp $HOME/xpdf-tools-linux-x.xx/doc/sample-xpdfrc $HOME mv sample-xpdfrc .xpdfrc
と実行して該当のファイルを作ります。
ファイル内にこのようにフォントのありかが記述されており、しかもコメントアウトされているのでコメントを外す。
フォントファイルの実体がいないと意味がないので、探してきてwgetしましたよ。
#fontFile Times-Roman /usr/local/share/ghostscript/fonts/n021003l.pfb #fontFile Times-Italic /usr/local/share/ghostscript/fonts/n021023l.pfb #fontFile Times-Bold /usr/local/share/ghostscript/fonts/n021004l.pfb #fontFile Times-BoldItalic /usr/local/share/ghostscript/fonts/n021024l.pfb #fontFile Helvetica /usr/local/share/ghostscript/fonts/n019003l.pfb #fontFile Helvetica-Oblique /usr/local/share/ghostscript/fonts/n019023l.pfb #fontFile Helvetica-Bold /usr/local/share/ghostscript/fonts/n019004l.pfb #fontFile Helvetica-BoldOblique /usr/local/share/ghostscript/fonts/n019024l.pfb #fontFile Courier /usr/local/share/ghostscript/fonts/n022003l.pfb #fontFile Courier-Oblique /usr/local/share/ghostscript/fonts/n022023l.pfb #fontFile Courier-Bold /usr/local/share/ghostscript/fonts/n022004l.pfb #fontFile Courier-BoldOblique /usr/local/share/ghostscript/fonts/n022024l.pfb #fontFile Symbol /usr/local/share/ghostscript/fonts/s050000l.pfb #fontFile ZapfDingbats /usr/local/share/ghostscript/fonts/d050000l.pfb
んで再度コンバート…あれ?
Syntax Error: Couldn't find a font for 'Helvetica' Syntax Error: Couldn't find a font for 'Helvetica'
なんでやねん…。落としたフォントファイルがダメだったのか。
果たして、ほんとに入ってないのかなんなのかコンピュータ内を探してみる。
$ fc-match Helvetica DejaVuSans.ttf: "DejaVu Sans" "Book"
いるじゃん。ちゃんといるじゃん。
ならば、と記述変更。
この DejaVuSans.ttf は、私の環境では /usr/share/fonts/dejavu/ にいる。
コンピュータに元々持ってるフォントで書き換えてみます。
解決
fontFile Times-Roman /usr/share/fonts/dejavu/DejaVuSerif.ttf fontFile Times-Italic /usr/share/fonts/dejavu/DejaVuSerif-Italic.ttf fontFile Times-Bold /usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf fontFile Times-BoldItalic /usr/share/fonts/dejavu/DejaVuSerifCondensed-BoldItalic.ttf
そして再コンバート…やった、解決。
多分運用環境を作るときにまた手間取るだろうので、メモ書き。