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

1pt

※この方法はかなり処理速度が遅い、という結論に至りました。負荷のかかっているサーバーではおすすめできません。

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


このディレクトリの下に、適当なフォルダを作り、

$ ttmkfdir
$ mkfontdir
# /etc/init.d/xfs restart


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

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


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

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

「サーバーでWebページをPDFにする方法」について友人に書いてもらう。

あなたにとって「サーバーでWebページをPDFにする方法」とは?

ログインするとワンクリックでキーワードを投稿できます

ログインする 新規登録する

お気に入りの説明

1 pt
うちもとあるRails案件でXvfbを使ってPDF出力してます
もっと読む

他の人の「サーバーでWebページをPDFにする方法」を見る