印刷チケットの操作 | Java
印刷スキーマの概要
XPS ドキュメント と XPS オブジェクト モデル は、 印刷スキーマ仕様 で導入されている印刷チケット オブジェクトを使用して、プリンターや表示アプリケーション向けにドキュメントの印刷設定を定義できます。
印刷スキーマ は、プリンターまたは印刷ジョブのプロパティを整理および記述するために使用される、階層的な XML ベースのスキーマです。印刷スキーマ キーワード と 印刷スキーマ フレームワーク という 2 つの主要な部分で構成されます。印刷スキーマ キーワードは、プリンターの属性と印刷ジョブの書式設定の目的を記述する要素インスタンスであり、印刷スキーマ フレームワークは、階層構造の XML 要素型セットを定義し、これらの要素型をどのように組み合わせて使用するかを指定します。
PrintTicket と呼ばれる印刷スキーマテクノロジは、印刷スキーマフレームワークで規定されている印刷スキーマキーワードを使用して構築されています。印刷スキーマ仕様では、サードパーティによるスキーマ拡張が認められており、印刷スキーマユーザーは、印刷スキーマキーワードで定義されている Property、Feature、Option、または ParameterInit インスタンスの範囲を超えることができます。サードパーティの要素インスタンスは、印刷スキーマキーワードで定義されているインスタンスに追加できます。ただし、サードパーティのプライベート Property インスタンスは、名前空間を作成したサードパーティに明確に関連付けられた名前空間に属している必要があります。
Aspose.Page for Java におけるプリントチケットのサポート
Aspose.Page API for Java には、印刷スキーマキーワードで定義された要素をカプセル化するクラス群が含まれています。これらのクラスは膨大な数に上るため、この記事では、Aspose.Page API を使用して XPS ドキュメント内のプリントチケットを操作するための最も一般的な手法をいくつか紹介します。まず、プリントチケットに含める各機能クラスのインスタンス化について説明し、次にこれらの機能をプリントチケットに組み込む方法を説明します。
入力ビンの指定
JobInputBin 機能は、デバイスにインストールされている入力ビン、またはデバイスでサポートされているすべてのビンのリストを識別します。この機能により、ジョブごとに入力ビンを指定できます。また、 DocumentInputBin 機能と PageInputBin 機能も用意されており、それぞれドキュメント単位とページ単位で入力ビンを指定できます。Print Ticket ドキュメントには、これら 3 つの機能のうち 1 つだけを含める必要があります。これらはすべて InputBin クラスから派生しており、同じシグネチャのコンストラクターを持っているため、デモでは JobInputBin を使用します。
Java コード行
1new JobInputBin(InputBin.InputBinOption.AutoSelect);
ジョブレベルの印刷チケットの機能を作成し、印刷デバイスに構成に基づいて最適なオプションを自動的に選択するよう指示します。
InputBin.InputBinOption クラスは、さまざまな入力ビンオプションのベースとなる静的フィールドを定義します。各オプションには、
InputBin.BinType、
InputBin.FeedDirection、
InputBin.FeedFace、
InputBin.FeedType、
InputBin.MediaCapacityなどの追加プロパティを含めることができます。
InputBin.MediaPath、
InputBin.MediaSizeAutoSense、
InputBin.MediaTypeAutoSense、
InputBin.MediaSheetCapacity。これらのプロパティを指定するには、基本プロパティを複製し、必要なプロパティのリストを指定して add()
メソッドを呼び出す必要があります。
1new JobInputBin(InputBin.InputBinOption.Manual.clone().add(
2 InputBin.FeedFace.FaceDown, InputBin.FeedDirection.LongEdgeFirst, new InputBin.MediaSheetCapacity(100)));
使用可能なプロパティ値の完全なリストについては、印刷スキーマ仕様および Aspose.Page API リファレンス の関連セクションを参照してください。
出力ビンの指定
JobOutputBin 機能は、デバイスにインストールされている出力ビン、またはデバイスでサポートされている出力ビンの完全なリストを示します。JobOutputBin
、
DocumentOutputBin、
PageOutputBin キーワードは相互に排他的であり、1 つの印刷チケットで 1 つだけ指定する必要があります。
各オプションには、
OutputBin.BinType プロパティと
OutputBin.MediaSheetCapacity プロパティが含まれる場合があります。したがって、JobOutputBin
機能は次のようにインスタンス化できます。
1new JobOutputBin(new OutputBin.OutputBinOption(OutputBin.BinType.Sorter),
2 new OutputBin.OutputBinOption(OutputBin.BinType.Stacker, new OutputBin.MediaSheetCapacity(100)));
ページの向きの指定
PageOrientation 機能は、物理的なメディアシートの向きを定義します。使用可能なオプションの一覧は、API リファレンスの PageOrientation.PageOrientationOption クラスセクションに記載されています。この機能のインスタンスを生成する例を以下に示します。
1new PageOrientation(PageOrientation.PageOrientationOption.Landscape);
出力の両面印刷モードの指定
JobDuplexAllDocumentsContiguously 機能は、出力の両面印刷特性を指定します。両面印刷機能を使用すると、メディアの両面に印刷することができ、ジョブ内のすべてのドキュメントが連続して両面印刷されます。JobDuplexAllDocumentsContiguously
と
DocumentDuplex は相互に排他的であり、これらのキーワード間の制約をどのように処理するかはドライバーによって決定されます。後者のキーワードは、ジョブ内の各ドキュメントが個別に両面印刷されることを意味します。
この機能には、
3つのオプション、つまりOneSided
、twoSidedLongEdge
、twoSidedShortEdge
が利用可能です。最初のオプションにはプロパティがなく、他の2つは
Duplex.DuplexModeでパラメーター化されます。
例えば、XPSファイルの両面印刷を、MediaSizeHeightに平行にページを反転して行うように指定するには、次のように記述します。
1new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.twoSidedLongEdge(Duplex.DuplexMode.Automatic));
片面印刷を希望する場合は、印刷チケットに次の機能を含めることができます。
1new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.OneSided);
出力のカラー設定の指定
PageOutputColor 機能は、出力のカラー設定の特性を記述します。この機能には、「Color」、「Grayscale」、「Monochrome」の3つのオプションがあり、それぞれに「DeviceBitsPerPixel」と「DriverBitsPerPixel」という2つの整数プロパティがあります。
例えば、カラープリンターでXPSファイルをグレースケールで印刷したい場合は、印刷チケットに次の機能を含めることができます。
1new PageOutputColor(PageOutputColor.PageOutputColorOption.Grayscale(0, 8));
異なるレベルの印刷チケットの操作
他のユーザーが作成したXPSファイルで作業している場合、印刷チケットが存在する場合は調整が必要になることがあります。ジョブレベルの印刷チケットを取得するには、XpsDocument
オブジェクトの
getJobPrintTicket()メソッドを呼び出すだけです。
1JobPrintTicket pt = document.getJobPrintTicket();
XPS ファイル内の特定のドキュメントの印刷チケットを取得するには、 getDocumentPrintTicket() メソッドを使用する必要があります。
1DocumentPrintTicket pt = document.getDocumentPrintTicket(<n>);
ここで、<n>
は XPS ファイル内のドキュメント番号です。
XPS ファイル内の特定のページの印刷チケットを取得するには、 getPagePrintTicket() メソッドを使用します。
1PagePrintTicket pt = document.getPagePrintTicket(<m>, <n>);
ここで、<m>
は XPS ファイル内のドキュメント番号、<n>
は m 番目のドキュメント内のページ番号です。
印刷チケットインスタンスを取得し、それが null
と等しくない場合は、上記のセクションに示すように構築された機能を追加できます。
1pt.add(<features>);
ここで、<features>
は、特定のレベルのプリントチケットに適した機能の可変長配列です。追加しようとしている機能の一部が古いプリントチケットに既に含まれていた場合、それらは新しいインスタンスによって上書きされます。
新しい XPS ファイルの場合のように、既存のプリントチケットを変更せず、完全に新しいインスタンスを割り当てる場合は、ジョブレベルのプリントチケットに対して setJobPrintTicket() メソッドを使用する必要があります。
1document.setJobPrintTicket(new JobPrintTicket(<features>));
ここで、<features>
は、ジョブレベルの印刷チケットに適した機能の可変長配列です。
XPS ファイル内の特定のドキュメントに印刷チケットを割り当てる場合は、 setDocumentPrintTicket() メソッドを使用します。
1document.setDocumentPrintTicket(<n>, new DocumentPrintTicket(<features>));
ここで、<n>
は XPS ファイル内のドキュメント番号を表し、<features>
はドキュメントレベルの印刷チケットに適した機能の可変長配列です。
最後に、XPS ファイル内の特定のページに印刷チケットを割り当てる場合は、 setPagePrintTicket() メソッドを使用する必要があります。
1document.setPagePrintTicket(<m>, <n>, new PagePrintTicket(<features>));
ここで、<m>
は XPS ファイル内のドキュメント番号、<n>
は m 番目のドキュメント内のページ番号、<features>
はページレベルの印刷チケットに適した機能の可変長配列です。
以下は、Aspose.Page for Java サンプルプロジェクトのジョブレベルの印刷チケットの完全なコード例です。
1// For complete examples and data files, please go to https://github.com/aspose-page/Aspose.Page-for-Java
2// The path to the documents directory.
3String dataDir = Utils.getDataDir();
4
5// Create new XPS document
6final XpsDocument document = new XpsDocument();
7try {
8 // Set a custom job-level print ticket
9 document.setJobPrintTicket(new JobPrintTicket(
10 // Specify input bin.
11 new JobInputBin(InputBin.InputBinOption.Manual.clone().add(
12 InputBin.FeedFace.FaceDown, InputBin.FeedDirection.LongEdgeFirst, new InputBin.MediaSheetCapacity(100))),
13 // Specify output bin.
14 new JobOutputBin(new OutputBin.OutputBinOption(OutputBin.BinType.Sorter),
15 new OutputBin.OutputBinOption(OutputBin.BinType.Stacker, new OutputBin.MediaSheetCapacity(100))),
16 // Specify page orientation.
17 new PageOrientation(PageOrientation.PageOrientationOption.Landscape),
18 // Specify duplex mode fof the output.
19 new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.twoSidedLongEdge(Duplex.DuplexMode.Automatic)),
20 // Specify the color settings for the output.
21 new PageOutputColor(PageOutputColor.PageOutputColorOption.Grayscale(0, 8))));
22
23 // Save the document with the custom job-level print ticket.
24 document.save(dataDir + "output1.xps");
25} finally {
26 if (document != null)
27 document.close();
28}