プリントチケットの操作| C ++
印刷スキーマ
- XPSドキュメントおよび XPSオブジェクトモデル*は、 印刷スキーマ仕様で説明されている印刷チケットオブジェクトを使用して、プリンターへのドキュメントの印刷設定と表示アプリケーションを指定できます。
Print Schemaは、階層的に構造化され、プリンターまたは印刷ジョブのプロパティを整理および説明するために使用されるXMLベースのスキーマです。 2つの主要なコンポーネントで構成されています。 *印刷スキーマキーワード *と *印刷スキーマフレームワーク *。印刷スキーマキーワードは、プリンター属性と印刷ジョブフォーマットの意図を記述する要素インスタンスであり、印刷スキーマフレームワークは階層構造内のXML要素タイプのコレクションを定義し、これらの要素タイプを一緒に使用する方法を指定します。
printticketと呼ばれる印刷スキーマテクノロジーは、印刷スキーマフレームワークで指定されているように、印刷スキーマキーワードを使用して構築されています。印刷スキーマ仕様は、第三者によるスキーマ拡張機能をサポートしているため、印刷スキーマユーザーは *プロパティ *、 feature、 *option *、または parameterInit印刷スキーマキーワードで定義されているインスタンスに制限されません。サードパーティの要素インスタンスは、印刷スキーマキーワードによって定義される要素インスタンスに追加できます。ただし、プライベート、サードパーティ *プロパティ *インスタンスは、名前空間を作成したサードパーティに明確に関連付けられている名前空間に属する必要があります。
C ++のAspose.Pageでの印刷チケットサポート
C ++のAspose.Page APIには、印刷スキーマキーワードによって定義された要素をカプセル化する一連のクラスが含まれています。これらのクラスの数は非常に大きいため、この記事では、Aspose.Page APIを使用してXPSドキュメントで印刷チケットを操作するための最も一般的な手法のみをカバーしています。最初に、印刷チケットに含めたいすべての機能クラスのインスタンス化について説明します。次に、これらの機能を印刷チケットに含める方法を確認します。
入力ビンを指定する方法
jobinputbin機能は、デバイスにインストールされている入力ビンまたはデバイスのサポートされているビンの完全なリストについて説明しています。これにより、ジョブごとに入力ビンの仕様が可能になります。また、 DocumentInputbinおよび PageInputbin機能もあり、それぞれドキュメントごとに、ページごとに入力ビンを仕様を付けることができます。印刷チケットドキュメントには、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 Referenceの関連セクションを参照してください。
出力ビンを指定する方法
JobOutputbin機能は、デバイスに取り付けられた出力ビンまたはデバイスのサポートされているビンの完全なリストについて説明しています。 joboutputbin
、
documentOutputbinおよび
pageoutputbinキーワードは相互に排他的です。 1つの印刷チケットで指定する必要があります。
各オプションには、次のプロパティを含めることができます。したがって、「JobOutputbin」機能は次のように構築できます。
1new JobOutputBin(new OutputBin.OutputBinOption(OutputBin.BinType.Sorter),
2 new OutputBin.OutputBinOption(OutputBin.BinType.Stacker, new OutputBin.MediaSheetCapacity(100)));
ページの向きを指定する方法
Pageorientation機能は、物理メディアシートの向きについて説明しています。利用可能なオプションは、 PageOrientation.PageOrientationOptionAPIリファレンスのクラスセクションにリストされています。以下は、機能を構築する方法の例です。
1new PageOrientation(PageOrientation.PageOrientationOption.Landscape);
出力のデュプレックスモードを指定する方法
jobduplexalldocumentsは条件に留められている機能は、出力の二重特性について説明しています。デュプレックス機能により、メディアの両側に印刷できます。ジョブのすべての文書は、一緒に二重に隣接しています。 jobduplexalldocumentsはcontiguously
and
documentDuplexは相互に排他的です。これらのキーワード間の制約処理を決定するのはドライバー次第です。後者のキーワードは、ジョブ内の各ドキュメントが個別に二重になっていることを意味します。
この機能には 3つのオプション - 「onisided」、「TwosidedLongedge」、および「TwosidedShortedge」にあります。最初のものにはプロパティがなく、他の2つは duplex.duplexModeでパラメーター化されます。
たとえば、ページが *mediasizeheight *と平行に反転するようにXPSファイルに両面印刷を指定する場合は、次のように行うことができます。
1new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.TwoSidedLongEdge(Duplex.DuplexMode.Automatic));
ファイルを二重にしたくない場合は、次の機能を印刷チケットに追加できます。
1new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.OneSided);
出力の色設定を指定する方法
PageOutputColor機能は、出力の色設定の特性を説明しています。この機能には、「color」、「grayscale」、および「monochrome」の3つのオプションがあります。それぞれには、devicebitsbitsperpixelと
driverbitsperpixel」の2つの整数プロパティがあります。
たとえば、カラープリンターにXPSファイルをGrayscaleに印刷したい場合は、次の機能を印刷チケットに追加できます。
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>
はMTHドキュメント内のページの数です。
印刷チケットインスタンスを取得した後、「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-stradument内のページの番号であり、 <features>
はページレベルの印刷チケットに適した機能のさまざまな配列です。
以下は、Aspose.Page for c ++のページからのジョブレベルの印刷チケットの完全なコード例です。
1 // ExStart:CreateCustomPrintTicket
2 // For complete examples and data files, please go to https://github.com/aspose-page/Aspose.Page-for-.NET
3 // The path to the documents directory.
4 System::String dir = RunExamples::GetDataDir_WorkingWithPrintTickets();
5
6 // Create new XPS document
7 {
8 System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>();
9 // Clearing resources under 'using' statement
10 System::Details::DisposeGuard<1> __dispose_guard_0({ document});
11 // ------------------------------------------
12
13 try
14 {
15 // Set a custom job-level print ticket
16 document->set_JobPrintTicket(System::MakeObject<JobPrintTicket>(
17 System::MakeArray<System::SharedPtr<IJobPrintTicketItem>>({
18 // Specify input bin.
19 System::MakeObject<JobInputBin>(System::MakeArray<System::SharedPtr<InputBin::IInputBinItem>>({InputBin::InputBinOption::Manual->Clone()->Add(System::MakeArray<System::SharedPtr<InputBin::IInputBinOptionItem>>(
20 {InputBin::FeedFace::FaceDown, InputBin::FeedDirection::LongEdgeFirst, System::MakeObject<InputBin::MediaSheetCapacity>(100)}))})),
21 // Specify output bin.
22 System::MakeObject<JobOutputBin>(System::MakeArray<System::SharedPtr<OutputBin::IOutputBinItem>>({
23 System::MakeObject<OutputBin::OutputBinOption>(System::MakeArray<System::SharedPtr<OutputBin::IOutputBinOptionItem>>(
24 {OutputBin::BinType::Sorter})),
25 System::MakeObject<OutputBin::OutputBinOption>(System::MakeArray<System::SharedPtr<OutputBin::IOutputBinOptionItem>>(
26 {OutputBin::BinType::Stacker, System::MakeObject<OutputBin::MediaSheetCapacity>(100)}))})),
27 // Specify page orientation.
28 System::MakeObject<PageOrientation>(System::MakeArray<System::SharedPtr<PageOrientation::PageOrientationOption>>(
29 {PageOrientation::PageOrientationOption::Landscape})),
30 // Specify duplex mode for the output.
31 System::MakeObject<JobDuplexAllDocumentsContiguously>(System::MakeArray<System::SharedPtr<Duplex::DuplexOption>>(
32 {Duplex::DuplexOption::TwoSidedLongEdge(Duplex::DuplexMode::Automatic)})),
33 // Specify the color settings for the output.
34 System::MakeObject<PageOutputColor>(System::MakeArray<System::SharedPtr<PageOutputColor::IPageOutputColorItem>>(
35 {PageOutputColor::PageOutputColorOption::Grayscale(0, 8)}))})));
36
37 // Save the document with the custom job-level print ticket.
38 document->Save(dir + u"output1.xps");
39 }
40 catch(...)
41 {
42 __dispose_guard_0.SetCurrentException(std::current_exception());
43 }
44 }
45 // ExEnd:CreateCustomPrintTicket