紹介するツール

wkhtmltopdf

License は LGPLv3。
wk は webkit の略です。
元は Google で開発されていたツールです。

利点

HTML さえあれば、PDF が作成できます。
有志によって多数の言語向けにラッパーが用意されています。
Windows Server でも動きます。

欠点のようなもの

サーバーサイドで PDF を作成して、ダウンロードさせる場合は便利です。
Google と Apple は Webkit の開発方針で争って、Google は blink に...。

使い方

wkhtmltopdf <サイトのURL> <PDF を設置するファイルパス>
オプションは ドキュメント を読むのが早いです。

wkhtmltopdf のオプションに設定することで、ページ番号を入れたり、マージンの設定、ヘッダー・フッターの設定も簡単にできます。

PDF の時だけ、表示を変更したい場合

wkhtmltopdf は、HTML を PDF にするツールです。
つまり、 wkhtmltopdf でサーバーにアクセスしてきた時だけ、HTML を修正してしまえば良いのです。
User agent には、 wkhtmltopdf という文字列が含まれています。
これを利用します。

例えば hidden_pdf というクラスを持つ要素は PDF で非表示にし、
show_pdf というクラスを持つ要素は PDF で表示するようにしてみましょう。


// 注 : このコードは jQuery を必要としています
//   このコードをコピペするときは、表示の問題でスペースが全角スペースになっているので気をつけてください
(function () {
 if ((navigator.userAgent).match(/wkhtmltopdf/)) {
  $(".hidden_pdf").hide();
  $(".show_pdf").show();
 }
})();

納品したときに使用した方法

Java 案件だったのですが、ラッパーを使わず Java から command を実行しました。
今回は、帳票出力だったので、帳票出力した履歴が必要でした。
IIS が触れるディレクトリに PDF を出力し、出力されたら PDF をブラウザに送付しました。

いくつかの面倒なハマる点がありましたが Java 向け PDF 作成用の製品を使うよりかは、簡単に早く作成できました。
ハマったポイントは Java の実装方法で PDF の header 設定については、正しい日本語の資料が少ないことでした。

この記事の投稿者

kaieda
kaieda
この投稿者の最近の記事