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