そもそもPDFの仕様が不可思議なものであるのが原因なのだが、特に扱いづらいのは以下の二つである。ページの左下を原点としている。座標系の値はポイントのみ(1/72インチ)。これについては、どうしてもページの左上(正確には印刷可能領域の左上)を原点とし、ミリメートル単位の値であって欲しい。使う機能について簡単に呼び出せるようにできないものかと思った。そこでpdfmonkを作成した。このライブラリでは、iTextのPdfPCell、PdfContentByte、Document、PdfWriter等を完全にラップしており、それらを意識することなく使用できるようにしてある。この元々のiTextのオブジェクトにアクセスすることもできる。pdfmonkのリポジトリソースコードはGitHuBにあり、https://github.com/ysugimura/pdfmonkである。これを書いている時点のバージョンは1.0.1で、アーティファクトのMavenリポジトリは、https://ysugimura.github.io/mavenになる。以下は、ソースリポジトリの方のサンプルとして格納されているプログラムである。以下が、生成されたPDFファイルの例であり、pdfmonk_output.pdfソースプログラムは次のようになっている(犬の画像を除く)。元のiTextを使用してこれだけのことをするには、このコードの何倍にもなってしまうと思われる。先述したように座標系は印刷可能領域の左上が原点となっており、ミリメートル単位として扱える。必要であれば、ポイントでもインチでも扱え、それらの単位を混在させて使うことさえ可能である。PDF出力は、カレントディレクトリのoutput.pdfに書き込まれることに注意。Graphics2Dの座標系をミリメートルとして、ミリメートル座標系で描画する。ここでは単純に矩形しか描画していないが、おそらくGraphics2Dのすべての機能が使用できると思われる。座標系変換のためにアフィン変換を設定しているので、アフィン変換を再設定すると、当然ながらミリメートル座標系ではなくなる。使い終わったら必ずdispose()すること。これをしないとドキュメントクローズ時にエラーが発生する。}}続きは、iText+pdfmonkで楽々PDF作成、その2にある。GClipermimodその2の続きである。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。