注目のセミナー

申込受付中!

危機に強い
プロマネ養成
実践トレーニング

火消しのプロが、 実践演習と個別の メンタリングを通じ、 強いPMを2ヵ月で育成!

ソフト開発

Java技術最前線

ITpro

「Java SE 6完全攻略」番外編 Java SE 6u10の新機能 その12

2009/06/01
櫻庭 祐一=横河電機

先月に引き続き,今月も次世代Java Plug-inのJNLPサポートについて解説していきます。今週は,アプレットからの印刷について取り上げます。

歴史的な経緯から,Javaでの印刷は複数の方法があります。もっとも初期に使用されたのが,java.awt.PrintJobクラス,そしてJ2SE 1.2で導入されたのがjava.awt.printパッケージです。

PrinterJobクラスはAWTの機能を使用して印刷を行うためAWT印刷と呼ばれることがあります。もう一方のjava.awt.printパッケージはJava 2Dを使用して印刷を行うため,Java 2D印刷と呼ばれます。

その後,J2SE 1.4にてJava Print Serviceが導入されました。Java PrintServiceはJava 2D印刷の機能を補完し,Javaだけでプリンタの検索や,プリンタのプロパティの設定を行うことができるようになりました。現在は,ほとんどのアプリケーションでJava Print Serviceが使われているはずです。

しかし,JNLP APIはJ2SE 1.2時に策定されたこともあり,残念ながらJava Print Serviceを使用することができません。JNLP APIが提供している印刷機能は,Java 2D印刷と同等の機能になります。

Java 2D印刷ではjava.awt.print.Printableインタフェースとjava.awt.print.Pageableインタフェースの二つのインタフェースを用いて印刷対象を表します。Printableインタフェースは同じフォーマットを使用したページの印刷に使用します。一方のPageableインタフェースは,フォーマットの異なる複数ページの印刷に使用します。

そして,実際にプリンタとやり取りを行い,印刷を行うのがjava.awt.print.PrinterJobクラスです。

Printableインタフェースはprintメソッドを定義しており,その第1引数はjava.awt.Graphicsオブジェクトです。つまり,このGraphicsオブジェクトを使用して描画を行うと,それがプリンタで印刷されるわけです。これが,Java 2D印刷と呼ばれる由縁です。

Pageableインタフェースは複数のページを扱うために,複数のPrintableオブジェクトを保持します。Printableインタフェースは実装クラスとしてjava.awt.print.Bookクラスが提供されているため,新たに実装クラスを作成する必要はありません。

>>コードで見てみよう
次ページ以降はITpro会員(無料)の方のみお読みいただけます。
会員の方は、 ログインしてご覧ください。
まだ会員でない方は、ぜひ登録(無料)していただき、ITproの豊富なコンテンツをご覧ください。

この記事に対するfacebookコメント

nikkeibpITpro

読みましたか? 〜 未読記事をご紹介