Drucktickets manipulieren | Java
Einführung in das Druckschema
XPS-Dokumente und das XPS-Objektmodell können die Druckticketobjekte verwenden, die in der Druckschemaspezifikation eingeführt werden, um die Druckeinstellungen eines Dokuments für Drucker und Anzeigeanwendungen zu definieren.
Das Druckschema ist ein hierarchisches XML-basiertes Schema, das zum Organisieren und Beschreiben von Drucker- oder Druckauftragseigenschaften verwendet wird. Es besteht aus zwei Hauptteilen: den Print Schema Keywords und dem Print Schema Framework. Die Druckschema-Schlüsselwörter sind Elementinstanzen, die Druckerattribute und die Formatierungsabsicht von Druckaufträgen beschreiben, während das Druckschema-Framework eine Reihe von XML-Elementtypen in einer hierarchischen Struktur definiert und angibt, wie diese Elementtypen zusammen verwendet werden können.
Die Print Schema-Technologie, bekannt als PrintTicket, wird unter Verwendung der Print Schema-Schlüsselwörter erstellt, wie sie vom Print Schema Framework angegeben werden. Die Print Schema-Spezifikation ermöglicht Schemaerweiterungen durch Dritte, sodass Print Schema-Benutzer über die durch die Print Schema-Schlüsselwörter definierten Property-, Feature-, Option- oder ParameterInit-Instanzen hinausgehen können. Elementinstanzen von Drittanbietern können zu den durch die Druckschema-Schlüsselwörter definierten hinzugefügt werden. Allerdings müssen private Property-Instanzen von Drittanbietern zu einem Namespace gehören, der eindeutig mit dem Drittanbieter verknüpft ist, der den Namespace erstellt hat.
Unterstützung für Print Ticket in Aspose.Page für Java
Die Aspose.Page-API für Java enthält eine Reihe von Klassen, die durch die Print Schema Keywords definierte Elemente kapseln. Aufgrund der beträchtlichen Anzahl dieser Klassen werden wir in diesem Artikel nur einige der gängigsten Techniken zum Bearbeiten von Drucktickets in einem XPS-Dokument mithilfe der Aspose.Page-API diskutieren. Wir besprechen zunächst die Instanziierung jeder Feature-Klasse, die wir in das Druckticket aufnehmen möchten, und demonstrieren anschließend, wie diese Features in ein Druckticket integriert werden.
Angabe des Eingabefachs
Die Funktion JobInputBin identifiziert den installierten Eingabebehälter in einem Gerät oder die vollständige Liste der unterstützten Behälter für ein Gerät. Es ermöglicht die Angabe des Eingabefachs für jeden Auftrag. Es gibt auch die Funktionen DocumentInputBin und PageInputBin, die die Angabe des Eingabefachs pro Dokument bzw. pro Seite ermöglichen. Jedes Print-Ticket-Dokument sollte nur eine der drei Funktionen enthalten. Alle sind von der Klasse InputBin abgeleitet und verfügen über Konstruktoren mit derselben Signatur, daher verwenden wir JobInputBin zu Demonstrationszwecken.
Die Zeile des Java-Codes
1new JobInputBin(InputBin.InputBinOption.AutoSelect);
Erstellt eine Funktion für ein Druckticket auf Auftragsebene, die ein Druckgerät anweist, basierend auf der Konfiguration automatisch die beste Option auszuwählen.
Die Klasse InputBin.InputBinOption definiert statische Felder, die als Basis für verschiedene Eingabebin-Optionen dienen. Jede Option kann zusätzliche Eigenschaften wie InputBin.BinType, InputBin.FeedDirection, InputBin.FeedFace, InputBin.FeedType, InputBin.MediaCapacity enthalten, InputBin.MediaPath, InputBin.MediaSizeAutoSense, InputBin.MediaTypeAutoSense und InputBin.MediaSheetCapacity. Um diese Eigenschaften anzugeben, sollten Sie die Basiseigenschaft klonen und dann die Methode „add()“ mit einer Liste der gewünschten Eigenschaften aufrufen:
1new JobInputBin(InputBin.InputBinOption.Manual.clone().add(
2 InputBin.FeedFace.FaceDown, InputBin.FeedDirection.LongEdgeFirst, new InputBin.MediaSheetCapacity(100)));
Um die vollständige Liste der verfügbaren Eigenschaftswerte anzuzeigen, konsultieren Sie die Print Schema Specification und den entsprechenden Abschnitt der Aspose.Page API-Referenz.
Angabe des Ausgabefachs
Die Funktion JobOutputBin beschreibt das installierte Ausgabefach in einem Gerät oder die vollständige Liste der unterstützten Fächer für ein Gerät. Die Schlüsselwörter „JobOutputBin“, DocumentOutputBin und PageOutputBin schließen sich gegenseitig aus; In einem einzelnen Druckticket sollte nur eines angegeben werden.
Jede Option kann die Eigenschaften OutputBin.BinType und OutputBin.MediaSheetCapacity enthalten. Daher kann eine „JobOutputBin“-Funktion wie folgt instanziiert werden:
1new JobOutputBin(new OutputBin.OutputBinOption(OutputBin.BinType.Sorter),
2 new OutputBin.OutputBinOption(OutputBin.BinType.Stacker, new OutputBin.MediaSheetCapacity(100)));
Festlegen der Seitenausrichtung
Die Funktion PageOrientation definiert die Ausrichtung des physischen Medienblatts. Die Liste der verfügbaren Optionen finden Sie im Klassenabschnitt PageOrientation.PageOrientationOption der API-Referenz. Hier ist ein Beispiel dafür, wie eine Instanz dieser Funktion erstellt wird:
1new PageOrientation(PageOrientation.PageOrientationOption.Landscape);
Angabe des Duplexmodus für die Ausgabe
Die Funktion JobDuplexAllDocumentsContiguously beschreibt die Duplexeigenschaften der Ausgabe. Die Duplexfunktion ermöglicht das Drucken auf beiden Seiten des Mediums, wobei alle Dokumente im Auftrag zusammenhängend duplexiert werden. „JobDuplexAllDocumentsContiguously“ und DocumentDuplex schließen sich gegenseitig aus und es liegt am Treiber, zu bestimmen, wie Einschränkungen zwischen diesen Schlüsselwörtern gehandhabt werden. Das letztere Schlüsselwort bedeutet, dass jedes Dokument im Auftrag separat duplexiert wird.
Für diese Funktion stehen drei Optionen zur Verfügung: „OneSided“, „twoSidedLongEdge“ und „twoSidedShortEdge“. Der erste hat keine Eigenschaften und die anderen beiden sind mit Duplex.DuplexMode parametrisiert.
Wenn Sie beispielsweise für Ihre XPS-Datei den beidseitigen Druck festlegen möchten, sodass die Seite parallel zur MediaSizeHeight gespiegelt wird, können Sie dies wie folgt tun:
1new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.twoSidedLongEdge(Duplex.DuplexMode.Automatic));
Wenn Sie einseitiges Drucken bevorzugen, können Sie die folgende Funktion in das Druckticket integrieren:
1new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.OneSided);
Festlegen von Farbeinstellungen für die Ausgabe
Die Funktion PageOutputColor beschreibt die Eigenschaften der Farbeinstellungen für die Ausgabe. Für diese Funktion stehen drei Optionen zur Verfügung: „Farbe“, „Graustufen“ und „Monochrom“, jede mit zwei ganzzahligen Eigenschaften: „DeviceBitsPerPixel“ und „DriverBitsPerPixel“.
Wenn Sie beispielsweise möchten, dass Ihr Farbdrucker eine XPS-Datei in Graustufen druckt, können Sie die folgende Funktion in das Druckticket aufnehmen:
1new PageOutputColor(PageOutputColor.PageOutputColorOption.Grayscale(0, 8));
Arbeiten mit gedruckten Tickets verschiedener Stufen
Wenn Sie mit einer XPS-Datei arbeiten, die von jemand anderem erstellt wurde, müssen Sie möglicherweise das Druckticket anpassen, falls es vorhanden ist. Um ein Druckticket auf Auftragsebene abzurufen, können Sie einfach die Methode getJobPrintTicket() des Objekts „XpsDocument“ aufrufen:
1JobPrintTicket pt = document.getJobPrintTicket();
Um ein Druckticket für ein bestimmtes Dokument innerhalb der XPS-Datei abzurufen, sollten Sie die Methode getDocumentPrintTicket() verwenden:
1DocumentPrintTicket pt = document.getDocumentPrintTicket(<n>);
Dabei ist <n>
die Nummer des Dokuments in der XPS-Datei.
Um ein Druckticket für eine bestimmte Seite innerhalb der XPS-Datei abzurufen, sollten Sie die Methode getPagePrintTicket() verwenden:
1PagePrintTicket pt = document.getPagePrintTicket(<m>, <n>);
Dabei ist <m>
die Nummer des Dokuments in der XPS-Datei und <n>
die Nummer der Seite im m-ten Dokument.
Sobald Sie eine Druckticket-Instanz abgerufen haben und diese nicht gleich „null“ ist, können Sie Ihre Features hinzufügen, die wie in den obigen Abschnitten gezeigt aufgebaut sind:
1pt.add(<features>);
Dabei ist <Features>
ein Array variabler Länge von Features, die für das Druckticket der jeweiligen Ebene geeignet sind. Wenn das alte Druckticket bereits über einige der Funktionen verfügte, die Sie hinzufügen möchten, werden diese durch die neuen Instanzen überschrieben.
Wenn Sie bestehende Drucktickets lieber nicht ändern, sondern stattdessen eine völlig neue Instanz zuweisen möchten, wie es bei einer neuen XPS-Datei der Fall ist, sollten Sie für das Druckticket auf Jobebene die Methode setJobPrintTicket() verwenden:
1document.setJobPrintTicket(new JobPrintTicket(<features>));
Dabei ist <Features>
ein Array variabler Länge von Features, die für das Druckticket auf Auftragsebene geeignet sind.
Wenn Sie ein Druckticket für ein bestimmtes Dokument innerhalb der XPS-Datei zuweisen möchten, verwenden Sie die Methode
setDocumentPrintTicket():
1document.setDocumentPrintTicket(<n>, new DocumentPrintTicket(<features>));
Hier steht <n>
für die Nummer des Dokuments in der XPS-Datei und <Features>
ist ein Array variabler Länge von Features, die für das Druckticket auf Dokumentebene geeignet sind.
Wenn Sie schließlich ein Druckticket für eine bestimmte Seite innerhalb der XPS-Datei zuweisen möchten, sollten Sie die Methode setPagePrintTicket() verwenden:
1document.setPagePrintTicket(<m>, <n>, new PagePrintTicket(<features>));
Dabei ist <m>
die Nummer des Dokuments in der XPS-Datei, <n>
die Nummer der Seite im m-ten Dokument und <Features>
ein Array geeigneter Features variabler Länge für das Druckticket auf Seitenebene.
Nachfolgend finden Sie das vollständige Codebeispiel für das Druckticket auf Jobebene aus dem Beispielprojekt Aspose.Page für 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}