カラカニのメモ帳
mindiaカラカニのメモ帳見出し語

サーバーでWebページをPDFにする方法

kani · 2010-11-21 更新 · 1 ポイント

<span style="font-weight: bold">※この方法はかなり処理速度が遅い、という結論に至りました。負荷のかかっているサーバーではおすすめできません。</span>

htmlファイルからPDFを書き起こす場合にはmozilla2psを使うとよさげですが、他の方法もありました。

あとで書きますが、Mozillaベースではなく、Safariベースの同じものがありました()。(ソースからのコンパイルが必要ですが)

mozilla2ps : http://freshmeat.net/projects/mozilla2ps

mozilla2psって何ですか?

Geckoのレンダリングエンジン(Firefoxに搭載されているやつ)を使って印刷をしてくれるXULアプリです。

簡単に書くと、xulrunner を yum とか apt-get とかでインストールして、mozilla2pdf をダウソして、フォントをごにょごにょすれば簡単に使えます。

メモ: コマンドラインでHTMLファイル、PDFファイルを指定するときは絶対パスで指定しましょう。

何ができますか?

WindowsFirefoxと同じようにサーバー上でPDFに印刷することができます。Firefoxの「印刷プレビュー」で見ることのできるイメージとほとんど同じ感じです。

Windowsで印刷するのと違う点/フォントの扱い

WindowsインストールしてあるフォントはLinuxには標準でインストールされていないので、代替となるフォントを探してくる必要があります。(後で書く)
ちなみに、PDFファイルには使用したフォントが埋め込まれる(サブセットではなく、フルセットで)のでどのような環境でも同じように表現されるはずです。が、商用フォントはPDFの埋め込みなどでライセンスに制限があったりするので注意が必要です。

フォントのインストール

Linuxにはxfsという「フォントサーバー」なるものがあります。
このフォントサーバーが認識できるよう、TrueTypeフォントをインストールしてあげましょう。

CentOS/RHELのデフォルトでは次のディレクトリの配下にたくさんフォントが入っています。

/usr/share/fonts

このディレクトリの下に、適当なフォルダを作り、
>|shell|
$ ttmkfdir
$ mkfontdir
# /etc/init.d/xfs restart
||<

としてやれば多分大丈夫だと思います。(後で書く)

サーバーにはディスプレイがないけど、ちゃんと動くの?

XULアプリは基本的にディスプレイがないとだめっぽいです。特にサーバーにはディスプレイがないので、仮想ディスプレイっぽいもの(正確にはXサーバーと呼んだりする)をインストールしてやる必要があります。

近代的なLinuxを使っていれば指一本でインストールできます。Xvfbというプログラムを使います(後で書く)

関連する見出し語

コメント

sakuya877 · 2010-09-03

mozilla2pdf

mozilla2ps誤植ではないのでしょうか ?

kani · 2010-11-21

あ、そうです! mozilla2psです。ありがとうございます。