パッケージJava製品開発担当の大です。こんにちは。

4月8日に、シーオーリポーツ製品のリビジョンアップを行いました。今回のリビジョンアップで、「シーオーリポーツ for Java」では、PDF出力に関する機能追加と多くの不具合修正を行っています。

今日は、この強化されたPDF出力機能について書いてみようと思います。

シーオーリポーツ for Java には、プラットフォームを選ばない「PureJava版モジュール」と、動作環境はWindows限定でシーオーリポーツV9と同等の機能を持つ「Windows版モジュール」が同梱されています。今回のPDF出力機能強化は主に「PureJava版モジュール」に関するものです。

PDF描画処理を一新

PureJava版モジュールでの内部的なPDFオブジェクトの描画処理を大幅に変更し、最適化を行いました。この結果、特に大量ページ出力時の描画の速度向上とファイルサイズ縮小に成功しました。(逆にページ数が少ない場合は、従来版より遅く、ファイルサイズも大きくなりますが…)。

以下の比較表は、シーオーリポーツのサンプルではおなじみの保険の契約書の「ご契約者様控」を、ページ数を変えて出力した結果です(HokenSample.pdf )。

ファイルサイズの比較

ファイルサイズの比較(クリックで拡大)

出力時間の比較

出力時間の比較(クリックで拡大)

また、従来版にあった「弧の描画が45度単位に丸められる」「日本語フォントは等幅の『MS 明朝』『MS ゴシック』しか使えない」などの機能制限を無くし、フォームエディタでデザインしたレイアウトの再現性を高めました。

多国語対応

APIに、フォントごとにCMapを割り当てられるメソッドを追加しました(PureJava版・Windows版共通)。
これにより、「中国語と日本語の混在したPDF」なども出力できるようになりました。

多国語対応サンプル

多国語対応サンプル(クリックで拡大)

暗号化をサポート

従来のPureJava版モジュールでは未対応だった、暗号化をサポートしました。これにより、パスワード付のPDFや印刷が制限されたPDFも出力できるようになりました。

印刷が制限されたドキュメントのサンプル

印刷が制限されたドキュメントのサンプル(クリックで拡大)

テキストオブジェクトの「縮小して全体を表示」をサポート

これもPureJava版モジュールでは対応が遅れていた「縮小して全体を表示」機能を実装しました。文字列がテキストオブジェクトに収まりきらない場合に、自動的にフォントサイズを縮小して収まるように調整します。

縮小して全体を表示するサンプル

縮小して全体を表示するサンプル

その他

その他、追加された機能の詳細や不具合修正については、付属の「描画ライブラリ ユーザーズマニュアル」をご覧ください。

従来版と非互換な機能追加はありませんので、製品をお持ちのお客様は、アップデートをよろしくお願いします。また、製品の導入をご検討中のお客様は、体験版をダウンロードして是非一度お試しください。