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

