Manipolazione dei ticket di stampa | Java
Introduzione allo Schema di Stampa
I documenti XPS e il Modello a Oggetti XPS possono utilizzare gli oggetti ticket di stampa, introdotti nella Specifica dello Schema di Stampa, per definire le preferenze di stampa di un documento per stampanti e applicazioni di visualizzazione.
Lo Schema di Stampa è uno schema gerarchico basato su XML utilizzato per organizzare e descrivere le proprietà della stampante o del processo di stampa. Si compone di due parti principali: le Parole Chiave dello Schema di Stampa e il Framework dello Schema di Stampa. Le Parole Chiave dello Schema di Stampa sono istanze di elemento che descrivono gli attributi della stampante e l’intento di formattazione del processo di stampa, mentre il Framework dello Schema di Stampa definisce un set di tipi di elemento XML in una struttura gerarchica e specifica come questi tipi di elemento possono essere utilizzati insieme.
La tecnologia Print Schema, nota come PrintTicket, è sviluppata utilizzando le Print Schema Keywords specificate dal Print Schema Framework. Le Print Schema Specification consentono estensioni dello schema da parte di terze parti, consentendo agli utenti di Print Schema di andare oltre le istanze Property, Feature, Option o ParameterInit definite dalle Print Schema Keywords. È possibile aggiungere istanze di elementi di terze parti a quelle definite dalle Print Schema Keywords; tuttavia, le istanze Property private di terze parti devono appartenere a uno spazio dei nomi chiaramente associato alla terza parte che ha creato lo spazio dei nomi.
Supporto per Print Ticket in Aspose.Page per Java
L’API Aspose.Page per Java contiene un set di classi che incapsulano gli elementi definiti dalle Print Schema Keywords. A causa del numero significativo di queste classi, in questo articolo discuteremo solo alcune delle tecniche più comuni per la manipolazione dei ticket di stampa in un documento XPS utilizzando l’API Aspose.Page. Inizieremo discutendo l’istanziazione di ciascuna feature class che desideriamo includere nel ticket di stampa, seguita da una dimostrazione di come incorporare queste feature in un ticket di stampa.
Specifica del bin di input
La funzionalità JobInputBin identifica il bin di input installato in un dispositivo o l’elenco completo dei bin supportati per un dispositivo. Consente di specificare il bin di input per ogni job. Sono disponibili anche le funzionalità DocumentInputBin e PageInputBin che consentono di specificare il bin di input rispettivamente per documento e per pagina. Ogni documento di ticket di stampa dovrebbe includere solo una delle tre funzionalità. Tutti derivano dalla classe InputBin e hanno costruttori con la stessa firma, quindi useremo JobInputBin a scopo dimostrativo.
La riga di codice Java
1new JobInputBin(InputBin.InputBinOption.AutoSelect);
Genera una funzionalità per un ticket di stampa a livello di processo che indica a un dispositivo di stampa di scegliere automaticamente l’opzione migliore in base alla configurazione.
La classe
InputBin.InputBinOption definisce campi statici che fungono da base per varie opzioni del contenitore di input. Ogni opzione può contenere proprietà aggiuntive come
InputBin.BinType,
InputBin.FeedDirection,
InputBin.FeedFace,
InputBin.FeedType,
InputBin.MediaCapacity,
InputBin.MediaPath,
InputBin.MediaSizeAutoSense,
InputBin.MediaTypeAutoSense e
InputBin.MediaSheetCapacity. Per specificare queste proprietà, è necessario clonare la proprietà di base e quindi chiamare il metodo add()
con un elenco di proprietà desiderate:
1new JobInputBin(InputBin.InputBinOption.Manual.clone().add(
2 InputBin.FeedFace.FaceDown, InputBin.FeedDirection.LongEdgeFirst, new InputBin.MediaSheetCapacity(100)));
Per visualizzare l’elenco completo dei valori delle proprietà disponibili, consultare la Specifica dello Schema di Stampa e la sezione pertinente del riferimento API di Aspose.Page.
Specifica del contenitore di output
La funzionalità
JobOutputBin descrive il contenitore di output installato in un dispositivo o l’elenco completo dei contenitori supportati per un dispositivo. Le parole chiave JobOutputBin
,
DocumentOutputBin e
PageOutputBin si escludono a vicenda; in un singolo ticket di stampa è necessario specificarne solo una. Ogni opzione può includere le proprietà
OutputBin.BinType e
OutputBin.MediaSheetCapacity. Pertanto, una funzionalità JobOutputBin
può essere istanziata come segue:
1new JobOutputBin(new OutputBin.OutputBinOption(OutputBin.BinType.Sorter),
2 new OutputBin.OutputBinOption(OutputBin.BinType.Stacker, new OutputBin.MediaSheetCapacity(100)));
Specifica dell’orientamento della pagina
La funzione PageOrientation definisce l’orientamento del foglio di supporto fisico. L’elenco delle opzioni disponibili è disponibile nella sezione della classe PageOrientation.PageOrientationOption del riferimento API. Ecco un esempio di come creare un’istanza di questa funzione:
1new PageOrientation(PageOrientation.PageOrientationOption.Landscape);
Specifica della modalità duplex per l’output
La funzionalità
JobDuplexAllDocumentsContiguously descrive le caratteristiche di stampa duplex dell’output. La funzionalità duplex consente la stampa su entrambi i lati del supporto, con tutti i documenti del processo stampati in fronte-retro in modo contiguo. JobDuplexAllDocumentsContiguously
e
DocumentDuplex si escludono a vicenda e spetta al driver determinare come gestire i vincoli tra queste parole chiave. Quest’ultima parola chiave indica che ogni documento del processo viene stampato in fronte-retro separatamente.
Per questa funzionalità sono disponibili
tre opzioni: OneSided
, twoSidedLongEdge
e twoSidedShortEdge
. La prima non ha proprietà, mentre le altre due sono parametrizzate tramite
Duplex.DuplexMode.
Ad esempio, se si desidera impostare la stampa fronte-retro per il file XPS in modo che la pagina venga capovolta parallelamente all’altezza del MediaSizeHeight, è possibile procedere come segue:
1new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.twoSidedLongEdge(Duplex.DuplexMode.Automatic));
Se preferisci la stampa solo fronte, puoi includere la seguente funzionalità nel biglietto di stampa:
1new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.OneSided);
Specifica delle impostazioni colore per l’output
La funzionalità
PageOutputColor descrive le caratteristiche delle impostazioni colore per l’output. Sono disponibili tre opzioni per questa funzionalità: Color
, Grayscale
e Monochrome
, ciascuna con due proprietà intere: DeviceBitsPerPixel
e DriverBitsPerPixel
.
Se, ad esempio, si desidera che la stampante a colori stampi un file XPS in scala di grigi, è possibile includere la seguente funzionalità nel ticket di stampa:
1new PageOutputColor(PageOutputColor.PageOutputColorOption.Grayscale(0, 8));
Lavorare con ticket di stampa di diversi livelli
Se si sta lavorando con un file XPS creato da qualcun altro, potrebbe essere necessario modificarne il ticket di stampa, qualora presente. Per recuperare un ticket di stampa a livello di processo, è sufficiente chiamare il metodo
getJobPrintTicket() dell’oggetto XpsDocument
:
1JobPrintTicket pt = document.getJobPrintTicket();
Per recuperare un ticket di stampa per un documento specifico all’interno del file XPS, è necessario utilizzare il metodo getDocumentPrintTicket():
1DocumentPrintTicket pt = document.getDocumentPrintTicket(<n>);
dove <n>
è il numero del documento all’interno del file XPS.
Per recuperare un ticket di stampa per una pagina specifica all’interno del file XPS, è necessario utilizzare il metodo getPagePrintTicket():
1PagePrintTicket pt = document.getPagePrintTicket(<m>, <n>);
dove <m>
è il numero del documento all’interno del file XPS e <n>
è il numero della pagina all’interno dell’m-esimo documento.
Una volta recuperata un’istanza del ticket di stampa e se questa non è uguale a null
, è possibile aggiungere le funzionalità costruite come mostrato nelle sezioni precedenti:
1pt.add(<features>);
dove <features>
è un array di lunghezza variabile di feature adatte al ticket di stampa del livello specifico. Se il vecchio ticket di stampa conteneva già alcune delle feature che si sta tentando di aggiungere, queste verranno sovrascritte dalle nuove istanze.
Se si preferisce non modificare i ticket di stampa esistenti ma assegnare un’istanza completamente nuova, come nel caso di un nuovo file XPS, per il ticket di stampa a livello di job è necessario utilizzare il metodo setJobPrintTicket():
1document.setJobPrintTicket(new JobPrintTicket(<features>));
dove <features>
è un array di lunghezza variabile di feature adatte al ticket di stampa a livello di processo.
Se si desidera assegnare un ticket di stampa per un documento specifico all’interno del file XPS, utilizzare il metodo setDocumentPrintTicket():
1document.setDocumentPrintTicket(<n>, new DocumentPrintTicket(<features>));
Qui, <n>
indica il numero del documento all’interno del file XPS e <features>
è un array di lunghezza variabile di funzionalità adatte al ticket di stampa a livello di documento.
Infine, se si desidera assegnare un ticket di stampa per una pagina specifica all’interno del file XPS, è necessario utilizzare il metodo setPagePrintTicket():
1document.setPagePrintTicket(<m>, <n>, new PagePrintTicket(<features>));
dove <m>
è il numero del documento all’interno del file XPS, <n>
è il numero della pagina all’interno del documento m-esimo e <features>
è un array di lunghezza variabile di feature adatte al ticket di stampa a livello di pagina.
Di seguito è riportato l’esempio di codice completo per il ticket di stampa a livello di processo tratto dal progetto di esempio Aspose.Page per 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}