【XPDF】XPDFのpdftopngで出力したpng画像が豆腐のように真っ白だった話

研究
Polina Tankilevitch at Pexels
この記事は約6分で読めます。

この記事は1年前の記事です。当時の情報、理解に基づいておりますのでご留意ください

はじめに

今回のオーダーはPDFファイルのプレビュー画像をよしなに生成しろとのこと。
imagemagickを使う方法もあったのですがサーバ負荷が高いのでXPDFを利用。

実作業

Xpdf - TeX Wiki
XpdfReader

この辺に従う。今回も開発環境はamazon lightsailにamazon linuxを入れたものなので、

Download Xpdf and XpdfReader

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

そして再コンバート…やった、解決。

多分運用環境を作るときにまた手間取るだろうので、メモ書き。

コメント

タイトルとURLをコピーしました