目次 |
前へ |
次へ
Java 印刷サービス API を使用する標準的なアプリケーションは、印刷要求を処理するために次の手順を実行します。
- 適切な DocFlavor を取得します。DocFlavor は、印刷データの書式を定義するクラスです。
- AttributeSet を作成します。AttributeSet には、目的の印刷サービス機能を定義した一連の属性セットがカプセル化されます。たとえば、ステープル止めおよび両面印刷で 5 部印刷する機能などがカプセル化されます。
- DocFlavor と属性セットに指定された印刷要求を処理できる印刷サービスを検索します。
- 印刷サービスから印刷ジョブを作成します。
- 印刷ジョブの印刷メソッドを呼び出します。
アプリケーションは、印刷する対象および方法に応じて手順を実行します。印刷データは、プリンタまたは出力ストリームに送信できます。印刷データの書式は、テキストまたはイメージ以外に、2D グラフィックスをカプセル化した Java オブジェクトでもかまいません。印刷データが 2D グラフィックスの場合は、印刷ジョブは DocPrintJob または PrinterJob を使用して表現できます。印刷データがドキュメントの場合は、DocPrintJob を使用する必要があります。
印刷メソッドと印刷データ書式の組み合わせによって、次の 6 つの印刷メカニズムを選択できます。
- DocPrintJob と PrintService の実装を使用して、ドキュメントをプリンタに印刷する
- DocPrintJob と StreamPrintService を使用して、ドキュメントを出力ストリームにストリーム配信する
- DocPrintJob と PrintService の実装を使用して、2D グラフィックスをプリンタに印刷する
- DocPrintJob と StreamPrintService を使用して、2D グラフィックスを出力ストリームにストリーム配信する
- java.awt.print.PrinterJob を使用して、2D グラフィックスを PrintService に印刷する
- java.awt.print.PrinterJob を使用して、2D グラフィックスを StreamPrintService にストリーム配信する
「属性」の章および「ドキュメントの種類の指定」の章では、これらの任意の印刷メカニズムで使用するために属性セットを作成し、ドキュメントの種類を指定する方法について説明します。「
ドキュメントの印刷とストリーム配信」の章では、DocPrintJob を使用したドキュメントの印刷およびストリーム配信について説明します。「
2D グラフィックスの印刷とストリーム配信」の章では、DocPrintJob と PrinterJob の両方を使用した 2D グラフィックスの印刷およびストリーム配信について説明します。
基本的な例
Java 印刷サービス API を使用するほとんどのアプリケーションは、ドキュメントを直接プリンタに送信する可能性があります。次のコードサンプルではこの方法を示します。
// Input the file
FileInputStream textStream;
try {
textstream = new FileInputStream("file.TXT");
} catch (FileNotFoundException ffne) {
}
if (textstream == null) {
return;
}
// Set the document type
DocFlavor myFormat = DocFlavor.INPUT_STREAM.TEXT_PLAIN_ASCII;
// Create a Doc
Doc myDoc = new SimpleDoc(texttream, myFormat, null);
// Build a set of attributes
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(5));
aset.add(MediaSize.ISO_A4);
aset.add(Sides.DUPLEX);
// discover the printers that can print the format according to the
// instructions in the attribute set
PrintService[] services =
PrintServiceLookup.lookupPrintServices(myFormat, aset);
// Create a print job from one of the print services
if (services.length > 0) {
DocPrintJob job = services[0].createPrintJob();
try {
job.print(myDoc, aset);
} catch (PrintException pe) {}
}
このサンプルでは、6 つの印刷方法のいずれかのみを示していますが、ほかの印刷メカニズムも同様の方法で機能します。このガイドの残りの部分では、各印刷処理およびすべての印刷メカニズムについて詳細に説明します。
目次 |
前へ |
次へ