EeBlog(テクニカルブログ)

第87回 Java Print Service API その5

引き続き「Java Print Service API」について学んでいきます。

今回はダイアログを使用した印刷を学びます。

ブラウザやテキストエディタなどの一般的なアプリケーションで印刷を行う際、
OS標準の印刷ダイアログが表示され、各種印刷設定を行うことができます。
同様の機能がJava Print Service APIにも用意されています。

Java Print Service APIで印刷ダイアログを表示するには、
ServiceUIクラスのprintDialogメソッドを使います。
このダイアログはSwingで作られており、シンプルな構成となっています。

では、実際に印刷ダイアログを使って印刷処理を行ってみましょう。
今回のサンプルでは、A4サイズで当社サイトのバドミントンクラブの画像を2部印刷します。(Java5以降)

 import java.net.URL;
 import javax.print.Doc;
 import javax.print.DocFlavor;
 import javax.print.PrintService;
 import javax.print.PrintServiceLookup;
 import javax.print.ServiceUI;
 import javax.print.SimpleDoc;
 import javax.print.attribute.HashPrintRequestAttributeSet;
 import javax.print.attribute.PrintRequestAttributeSet;
 import javax.print.attribute.standard.Copies;
 import javax.print.attribute.standard.MediaSizeName;


 public class PrintDialogTest {
     public static void main(String args[]) throws Exception {
         // ドキュメント生成
        URL url = new URL("http://www.eeb.co.jp/images/IMG_2082_1.jpg");
         DocFlavor docFlavor = DocFlavor.URL.JPEG;
         Doc doc = new SimpleDoc(url, docFlavor, null);


         // 印刷要求属性設定
        PrintRequestAttributeSet printRequestAttributeSet 
                                     = new HashPrintRequestAttributeSet();
         printRequestAttributeSet.add(new Copies(2));// 部数
        printRequestAttributeSet.add(MediaSizeName.ISO_A4);// 用紙サイズ


        // docフレーバと印刷要求属性に対応している印刷サービス一覧取得
        PrintService[] printServices = PrintServiceLookup.lookupPrintServices
                                       (docFlavor, printRequestAttributeSet);


         // 印刷ダイアログを表示して選択した出力先を得る
        PrintService printService = ServiceUI.printDialog(null, 100, 100,
           printServices, printServices[0], docFlavor, printRequestAttributeSet);


         // 印刷のキャンセルチェック
        if (printService == null) {
             return;
         }


         // 印刷実行
        printService.createPrintJob().print(doc, printRequestAttributeSet);
     }
 }