モジュール java.desktop

パッケージ javax.print

Java™Print Service APIの主なクラスとインタフェースを提供します。 Java Print Service APIを使用すると、クライアントおよびサーバー・アプリケーションが次のことを実行できるようになります。
  • 機能に基づいて、印刷サービスを検出および選択する
  • 印刷データの形式を指定する
  • 印刷するドキュメント型をサポートするサービスに印刷ジョブを送信する

印刷サービスの検出

アプリケーションから抽象クラスPrintServiceLookupのstaticメソッドを呼び出して、アプリケーションの印刷要求を満たす機能を持った印刷サービスを検索します。 たとえば、両面印刷のドキュメントを印刷する場合、アプリケーションは最初に、両面印刷対応のプリンタを検索する必要があります。

JDKには、標準プラットフォーム・プリンタを検出するためのPrintServiceLookup実装が含まれています。 印刷サービス・プロバイダは、IPPプリンタやJINIプリンタなど、その他の種類のプリンタを検索するために、PrintServiceLookupの実装を作成できます。 印刷サービス・プロバイダは、ServiceLoader機能を使用してこれらのPrintServiceLookup実装を動的にインストールできます。

属性の定義

javax.print.attributeおよびjavax.print.attribute.standardパッケージは、印刷サービス機能の記述、印刷ジョブ要件の指定、印刷ジョブの進行状況の追跡を行う印刷属性を定義します。

javax.print.attributeパッケージは、属性型、および属性型をセットにまとめる方法を記述します。 javax.print.attribute.standardパッケージは、APIのサポートするすべての標準属性を列挙します。これらの属性の大半は、IETF仕様「RFC 2911 Internet Printing Protocol, 1.1: Model and Semantics」(2000年9月)で指定された属性の実装です。 javax.print.attribute.standardで指定する属性には、解像度、印刷部数、媒体サイズ、ジョブの優先順位、ページ範囲などの一般的な機能が含まれます。

ドキュメント型の仕様

DocFlavorクラスは、JPEGやPostScriptなどの、印刷データの書式を表現します。 DocFlavorオブジェクトは、形式を記述するMIMEタイプと、ドキュメントをプリンタまたは出力ストリームに送信する方法を示すドキュメント表現クラス名で構成されます。 アプリケーションは、DocFlavorおよび属性セットを使用して、DocFlavorにより指定されたドキュメント型を印刷可能で、属性セットに指定された機能を保持するプリンタを検出します。

APIの使用

Java Print Service APIを使用する通常のアプリケーションは、次の手順を実行して、印刷要求を処理します。
  1. DocFlavorを選択する。
  2. 属性セットを作成する。
  3. DocFlavorおよび属性セットにより指定された印刷要求の処理が可能な印刷サービスを検出する。
  4. DocFlavorおよび実印刷データをカプセル化したDocオブジェクトを作成する。これは、Postscriptファイル、JPEGイメージ、URL、プレーン・テキストなど、さまざまな形式を取ることがある。
  5. DocPrintJobにより表される印刷ジョブを印刷サービスから取得する。
  6. 印刷ジョブの印刷メソッドを呼び出す。
次のサンプル・コードは、Java Print Service APIの一般的な使用方法を示します。A4サイズのPostScriptドキュメント(両面)を5部印刷可能なプリンタを検出し、返された印刷サービスの1つから印刷ジョブを作成し、印刷を呼び出します。

 FileInputStream psStream;
 try {
     psStream = new FileInputStream("file.ps");
 } catch (FileNotFoundException ffne) {
 }
 if (psStream == null) {
     return;
 }
 DocFlavor psInFormat = DocFlavor.INPUT_STREAM.POSTSCRIPT;
 Doc myDoc = new SimpleDoc(psStream, psInFormat, null);
 PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
 aset.add(new Copies(5));
 aset.add(MediaSizeName.ISO_A4);
 aset.add(Sides.DUPLEX);
 PrintService[] services =
 PrintServiceLookup.lookupPrintServices(psInFormat, aset);
 if (services.length > 0) {
     DocPrintJob job = services[0].createPrintJob();
     try {
         job.print(myDoc, aset);
     } catch (PrintException pe) {}
 }
 

注: javax.print APIでは、メソッドへのnull参照パラメータ指定は、ドキュメントに意味が明記されている場合を除いては不正であることに注意してください。 これに反する使用は無効なコーディングであり、すぐにまたはあとで実行時の例外が生ずる結果になります。 IllegalArgumentExceptionおよびNullPointerExceptionは、このような場合の典型的で許容できる実行時の例外の事例です。

導入されたバージョン:
1.4