印刷チケットの操作 | .NET
印刷スキーマ
XPS ドキュメント と XPS オブジェクト モデル は、 印刷スキーマ仕様 で説明されている印刷チケット オブジェクトを使用して、プリンターや表示アプリケーションに対してドキュメントの印刷設定を指定できます。
印刷スキーマ は、階層構造を持つ XML ベースのスキーマで、プリンターまたは印刷ジョブのプロパティを整理および記述するために使用されます。印刷スキーマ キーワード と 印刷スキーマ フレームワーク という 2 つの主要コンポーネントで構成されます。印刷スキーマ キーワードは、プリンターの属性と印刷ジョブの書式設定の目的を記述する要素インスタンスです。一方、印刷スキーマ フレームワークは、階層構造の XML 要素型のコレクションを定義し、これらの要素型をどのように組み合わせて使用するかを指定します。
PrintTicketと呼ばれる印刷スキーマテクノロジは、印刷スキーマフレームワークで指定された印刷スキーマキーワードを使用して構築されています。印刷スキーマ仕様はサードパーティによるスキーマ拡張をサポートしているため、印刷スキーマユーザーは、印刷スキーマキーワードで定義されているProperty、Feature、Option、またはParameterInitインスタンスに限定されません。印刷スキーマキーワードで定義されている要素インスタンスにサードパーティの要素インスタンスを追加できますが、サードパーティのプライベートPropertyインスタンスは、名前空間を作成したサードパーティに明確に関連付けられた名前空間に属している必要があります。
Aspose.Page for .NET のプリントチケットサポート
Aspose.Page API for .NET には、印刷スキーマキーワードで定義された要素をカプセル化するクラスセットが含まれています。これらのクラスの数は非常に多いため、この記事では、Aspose.Page API を使用して XPS ドキュメント内のプリントチケットを操作するための最も一般的な手法をいくつか紹介します。まず、プリントチケットに含めるすべての機能クラスのインスタンス化について説明します。次に、これらの機能をプリントチケットに含める方法を説明します。
入力ビンの指定方法
JobInputBin 機能は、デバイスにインストールされている入力ビン、またはデバイスでサポートされているすべてのビンのリストを記述します。この機能により、ジョブごとに入力ビンを指定できます。また、 DocumentInputBin 機能と PageInputBin 機能も用意されており、それぞれドキュメント単位とページ単位で入力ビンを指定できます。Print Ticket ドキュメントには、これら 3 つのうち 1 つだけを含める必要があります。これらはすべて InputBin クラスを継承し、同じシグネチャのコンストラクターを持つため、ここではデモ用に JobInputBin を使用します。
次のコード
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
オブジェクトの
JobPrintTicketプロパティを使用します。
1JobPrintTicket pt = document.JobPrintTicket;
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 ファイルの場合も同様)、ジョブレベルのプリントチケットでは、JobPrintTicket
プロパティを再度使用する必要があります。
1document.JobPrintTicket = 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 .NET サンプル プロジェクトのジョブレベルの印刷チケットの完全なコード例です。
1// For complete examples and data files, please go to https://github.com/aspose-page/Aspose.Page-for-.NET
2// The path to the documents directory.
3string dir = RunExamples.GetDataDir_WorkingWithPrintTickets();
4
5// Create new XPS document
6using (XpsDocument document = new XpsDocument())
7{
8 // Set a custom job-level print ticket
9 document.JobPrintTicket = 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(dir + "output1.xps");
25}