Javaはもちろん全方位な言語なので印刷はできる。いろんな方法があるが、おそらく一番手っ取り早いヤツということで。
印刷の登場クラス
基本はココ、java.awt.printパッケージだ。ココで大体そろう。
- java.awt.print.PageFormat ページ情報。A4とか用紙。
- java.awt.print.Printable 印刷の描画部分
- java.awt.print.PrinterException 印刷時の例外
- java.awt.print.PrinterJob 印刷の処理をしてくれる
手順としてはPrintableが実際に描画する処理で、ここで渡されるページ番号とGraphicsを利用して描画する。戻り値はそのページが存在するか、というもの。後述するサンプルではreturnのところを見て1ページだけ印刷しているのを確認してほしい。
PrinterJobがプリンタへの命令を行うところ。サンプルでは印刷前のダイアログを出して、OKが選択されたらそのプリンタと用紙に対して描画をしている。サンプルではクロスプラットフォームダイアログではなく、OSネイティブのダイアログを出している。こちらのほうが使いやすい場合も多いので、クロスプラットフォームのダイアログは利用しないというのもあり。「現実的にユーザーはWindowsなんだろ?」とわりきれば細かい指定ができるわけだし。
サンプルコード
PrinterJob job = PrinterJob.getPrinterJob(); Printable painter = new Printable() { @Override public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { if(pageIndex > 0){ return NO_SUCH_PAGE; } graphics.setColor(Color.RED); graphics.fillRect(10, 20, 100, 200); graphics.setColor(Color.BLACK); graphics.setFont(new Font("MS ゴシック",Font.PLAIN , 24)); graphics.drawString("印刷されていますか?", 100, 50); return PAGE_EXISTS; } }; job.setPrintable(painter); boolean print = job.printDialog(); if(print){ job.print(); }