株式会社イーヴ

EeBlog(テクニカルブログ)

TOP > EeBlog > 第87回 Java Print Service API その5

第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);
     }
 }