トップ >
技術メモ (ソフトウェア開発) >
PDF生成ツールあれこれ
(2007.10.1新規作成; 2007.10.7公開)
Ruby on Railsアプリケーションから使えそうなPDF出力ツールを探してみました。そのまとめです。
以前日記 (railsでPDFを生成する ) に書きましたが、キャンバス機能(座標を指定して文字を出力したり、線を引いたりする)だけでは、帳票を作るのに実用ではありません。レイアウトエンジン(表や罫線、という指定の仕方)が必要です。
Railsアプリケーションに組み込む場合はRubyで書かれたものでないといけませんが、別コマンドとして呼び出すことができればRubyにこだわることはありません。
PDF生成ツール
探してみると、結構いっぱいあります。
ReportLab - Open Source Software
ReportLab Toolkitは、Python で書かれたツールキット。日本語の出力も、フォント埋め込み、表組みも可能。プログラムで、Paragraphオブジェクト(段落)、Tableオブジェクト(表)などを組み合わせる。
OpenReport: Open Source and profesional reporting solution
このサイトにあるTiny RML2PDFは、XMLデータをPDFに変換する。内部でReportLabを使っている。サイトには、RML is a more powerfull, simple and flexible alternative to XSL:FO. とある。日本語フォントの出力、TrueTypeフォントの埋め込みも可能。
実際に使ってみると、書き間違えたときのエラーが非常に不親切で、元になるRML XMLデータを作るのが難しい。Tiny ERPに同梱されているもののほうが新しいが、そちらも大して変わらない。
今のバージョンはちょっと苦しい。
Ruby Reports
Ruby Reports (Ruport) は、Rubyで書かれたリポーティングツール。Ruby on Railsとの相性がいい。ActiveRecordのデータを少ないステップでPDF化できる。裏でpdf-writerを使っている。
pdf-writerの最新版は、バージョン1.1.3だが、そのままでは日本語フォントが扱えず、TrueTypeフォントの埋め込みもできない。
pdf-writerが更新されない限り、実用にならないのではないか。
iText, a Free Java-PDF Library: Home Page
Javaで書かれたもの。プログラムでPhraseオブジェクト、Paragraphオブジェクト(段落)、Tableオブジェクト(表)などを加えていく。ReportLabみたい。日本語OK、フォント埋め込みも可能。
データを格納するXMLデータとタグマップデータを組み合わせてPDFへ変換することもできる。まだ試してないが、よさそう。
Apache FOP
XSL-FO XMLデータからPDFを生成する。コマンドラインツールとして使うこともできるし、Javaプログラムに埋め込むこともできる。多少の設定で日本語フォントを扱える。
SourceForge.net: JasperReports - Java Reporting
Javaの帳票ツール。GUIプログラムのiReportで帳票テンプレートを作り、JasperReportsでデータベースから取り出したデータを動的に埋め込んでPDFを出力する。あらかじめテンプレートをコンパイルして、PDF生成処理の時間を短縮するようになっている。
ここは中島 靖のホームページです。
PDFJ -- Perlで書かれたPDF生成モジュール。日本語組版ルールを組み込んであり、XMLデータからPDFを作ることもできる (XPDFJ)。
gtkhtml3 + gtk+のPDF出力機能
番外。gtkhtml3 (libgtkhtml) ライブラリはEvolutionの内部で使われているHTMLエンジン。gtk+の印刷ダイアログはPDF出力があるので、組み合わせて何とかならないか試してみた。
HTML文書からPDFは生成できて、日本語も出力できるが、フォントを切り替えることができなかった。デフォルトフォントだけでは見栄えがしない。
Rabbit
もう一つ番外。プレゼンテーションソフト。ジャンルが違う。
結論
日本語限定ならPDFJが簡単で見栄えよく作れそうに感じます。新しくPerlで書く気にならないのが難点でしょうか。あとは、iText, Apache FOP, JasperReportsのいずれかがいいように思います。
別ページで、Apache FOPの使い方をまとめてみました; Apache FOPでPDF生成
トップ >
技術メモ (ソフトウェア開発) > PDF生成ツールあれこれ
Netsphere Laboratories http://www.nslabs.jp/
Copyright (c) HORIKAWA Hisashi. All rights reserved.
[PR]