Manipulation des tickets imprimés | Java
Introduction au schéma d’impression
Les documents XPS et le Modèle d’objet XPS peuvent utiliser les objets de ticket d’impression, qui sont introduits dans la Spécification du schéma d’impression, pour définir les préférences d’impression d’un document pour les imprimantes et les applications de visualisation.
Le Schéma d’impression est un schéma hiérarchique basé sur XML utilisé pour organiser et décrire les propriétés de l’imprimante ou du travail d’impression. Il comprend deux parties principales : les Print Schema Keywords et le Print Schema Framework. Les mots-clés du schéma d’impression sont des instances d’éléments qui décrivent les attributs de l’imprimante et l’intention de formatage du travail d’impression, tandis que le cadre de schéma d’impression définit un ensemble de types d’éléments XML dans une structure hiérarchique et spécifie comment ces types d’éléments peuvent être utilisés ensemble.
La technologie Print Schema, connue sous le nom de PrintTicket, est construite à l’aide des mots-clés Print Schema tels que spécifiés par Print Schema Framework. La spécification de schéma d’impression permet des extensions de schéma par des tiers, permettant aux utilisateurs de schéma d’impression d’aller au-delà des instances Property, Feature, Option ou ParameterInit définies par les mots-clés du schéma d’impression. Des instances d’éléments tiers peuvent être ajoutées à celles définies par les mots-clés du schéma d’impression ; cependant, les instances Property privées et tierces doivent appartenir à un espace de noms clairement associé au tiers qui a créé l’espace de noms.
Prise en charge du ticket d’impression dans Aspose.Page pour Java
L’API Aspose.Page pour Java contient un ensemble de classes qui encapsulent des éléments définis par les mots-clés du schéma d’impression. En raison du nombre important de ces classes, dans cet article, nous aborderons uniquement quelques techniques les plus courantes pour manipuler les tickets d’impression dans un document XPS à l’aide de l’API Aspose.Page. Nous commencerons par discuter de l’instanciation de chaque classe de fonctionnalités que nous souhaitons inclure dans le ticket d’impression, suivi d’une démonstration de la façon d’incorporer ces fonctionnalités dans un ticket d’impression.
Spécification du bac d’entrée
La fonctionnalité JobInputBin identifie le bac d’entrée installé dans un périphérique ou la liste complète des bacs pris en charge pour un périphérique. Il permet de spécifier le bac d’entrée pour chaque tâche. Il existe également les fonctionnalités DocumentInputBin et PageInputBin qui permettent de spécifier le bac d’entrée par document et par page, respectivement. Tout document Print Ticket ne doit inclure qu’une seule des trois fonctionnalités. Tous sont dérivés de la classe InputBin et ont des constructeurs avec la même signature, nous utiliserons donc JobInputBin à des fins de démonstration.
La ligne de code Java
1new JobInputBin(InputBin.InputBinOption.AutoSelect);
produit une fonctionnalité pour un ticket d’impression au niveau de la tâche qui demande à un périphérique d’impression de choisir automatiquement la meilleure option en fonction de la configuration.
La classe
InputBin.InputBinOption définit des champs statiques qui servent de base à diverses options de bac d’entrée. Chaque option peut contenir des propriétés supplémentaires telles que
InputBin.BinType,
InputBin.FeedDirection,
InputBin.FeedFace,
InputBin.FeedType,
InputBin.MediaCapacity,
InputBin.MediaPath,
InputBin.MediaSizeAutoSense,
InputBin.MediaTypeAutoSense et
InputBin.MediaSheetCapacity. Pour spécifier ces propriétés, vous devez cloner la propriété de base, puis appeler la méthode add()
avec une liste des propriétés souhaitées :
1new JobInputBin(InputBin.InputBinOption.Manual.clone().add(
2 InputBin.FeedFace.FaceDown, InputBin.FeedDirection.LongEdgeFirst, new InputBin.MediaSheetCapacity(100)));
Pour afficher la liste complète des valeurs de propriété disponibles, consultez la spécification de schéma d’impression et la section appropriée de Aspose.Page référence API.
Spécification du bac de sortie
La fonctionnalité
JobOutputBin décrit le bac de sortie installé dans un périphérique ou la liste complète des bacs pris en charge pour un périphérique. Les mots-clés JobOutputBin
,
DocumentOutputBin et
PageOutputBin s’excluent mutuellement ; un seul doit être spécifié dans un seul ticket imprimé.
Chaque option peut inclure les propriétés
OutputBin.BinType et
OutputBin.MediaSheetCapacity. Par conséquent, une fonctionnalité JobOutputBin
peut être instanciée comme suit :
1new JobOutputBin(new OutputBin.OutputBinOption(OutputBin.BinType.Sorter),
2 new OutputBin.OutputBinOption(OutputBin.BinType.Stacker, new OutputBin.MediaSheetCapacity(100)));
Spécification de l’orientation de la page
La fonctionnalité PageOrientation définit l’orientation de la feuille de support physique. La liste des options disponibles se trouve dans la section de classe PageOrientation.PageOrientationOption de la référence API. Voici un exemple de la façon de produire une instance de cette fonctionnalité :
1new PageOrientation(PageOrientation.PageOrientationOption.Landscape);
Spécification du mode duplex pour la sortie
La fonctionnalité
JobDuplexAllDocumentsContiguous décrit les caractéristiques duplex de la sortie. La fonction recto verso permet d’imprimer sur les deux faces du support, tous les documents du travail étant recto verso de manière contiguë. JobDuplexAllDocumentsContiguous
et
DocumentDuplex s’excluent mutuellement, et c’est au pilote de déterminer comment les contraintes sont gérées entre ces mots-clés. Ce dernier mot-clé signifie que chaque document du travail est recto verso séparément.
Il existe
trois options disponibles pour cette fonctionnalité - OneSided
, twoSidedLongEdge
et twoSidedShortEdge
. Le premier n’a aucune propriété et les deux autres sont paramétrés avec le
Duplex.DuplexMode.
Par exemple, si vous souhaitez indiquer l’impression recto verso pour votre fichier XPS de telle sorte que la page soit retournée parallèlement à MediaSizeHeight, vous pouvez procéder comme suit :
1new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.twoSidedLongEdge(Duplex.DuplexMode.Automatic));
Si vous préférez l’impression recto, vous pouvez inclure la fonctionnalité suivante dans le ticket d’impression :
1new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.OneSided);
Spécification des paramètres de couleur pour la sortie
La fonctionnalité PageOutputColor décrit les caractéristiques des paramètres de couleur pour la sortie. Trois options sont disponibles pour cette fonctionnalité : « Couleur », « Niveaux de gris » et « Monochrome », chacune avec deux propriétés entières : « DeviceBitsPerPixel » et « DriverBitsPerPixel ».
Si, par exemple, vous souhaitez que votre imprimante couleur imprime un fichier XPS en niveaux de gris, vous pouvez inclure la fonctionnalité suivante dans le ticket d’impression :
1new PageOutputColor(PageOutputColor.PageOutputColorOption.Grayscale(0, 8));
Travailler avec des tickets imprimés de différents niveaux
Si vous travaillez avec un fichier XPS créé par quelqu’un d’autre, vous devrez peut-être ajuster son ticket d’impression au cas où il serait présent. Pour récupérer un ticket d’impression au niveau du travail, vous pouvez simplement appeler la méthode
getJobPrintTicket() de l’objet XpsDocument
:
1JobPrintTicket pt = document.getJobPrintTicket();
Pour récupérer un ticket d’impression pour un document particulier dans le fichier XPS, vous devez utiliser la méthode getDocumentPrintTicket() :
1DocumentPrintTicket pt = document.getDocumentPrintTicket(<n>);
où <n>
est le numéro du document dans le fichier XPS.
Pour récupérer un ticket d’impression pour une page particulière du fichier XPS, vous devez utiliser la méthode getPagePrintTicket() :
1PagePrintTicket pt = document.getPagePrintTicket(<m>, <n>);
où <m>
est le numéro du document dans le fichier XPS et <n>
est le numéro de la page dans le m-ième document.
Une fois que vous avez récupéré une instance de ticket d’impression et qu’elle n’est pas égale à « null », vous pouvez ajouter vos fonctionnalités construites comme indiqué dans les sections ci-dessus :
1pt.add(<features>);
où <features>
est un tableau de fonctionnalités de longueur variable adapté au ticket d’impression d’un niveau spécifique. Si l’ancien ticket d’impression comportait déjà certaines des fonctionnalités que vous essayez d’ajouter, elles seront écrasées par les nouvelles instances.
Si vous préférez ne pas modifier les tickets d’impression existants mais plutôt attribuer une instance entièrement nouvelle, comme c’est le cas avec un nouveau fichier XPS, alors pour le ticket d’impression au niveau de la tâche, vous devez utiliser la méthode setJobPrintTicket() :
1document.setJobPrintTicket(new JobPrintTicket(<features>));
où <features>
est un tableau de fonctionnalités de longueur variable adapté au ticket d’impression au niveau de la tâche.
Si vous souhaitez attribuer un ticket d’impression pour un document particulier dans le fichier XPS, utilisez la méthode
setDocumentPrintTicket() :
1document.setDocumentPrintTicket(<n>, new DocumentPrintTicket(<features>));
Ici, «
Enfin, si vous souhaitez attribuer un ticket d’impression pour une page particulière du fichier XPS, vous devez utiliser la méthode setPagePrintTicket() :
1document.setPagePrintTicket(<m>, <n>, new PagePrintTicket(<features>));
où <m>
est le numéro du document dans le fichier XPS, <n>
est le numéro de la page dans le m-ième document et <features>
est un tableau de longueur variable de fonctionnalités adaptées pour le ticket d’impression au niveau de la page.
Vous trouverez ci-dessous l’exemple de code complet pour le ticket d’impression au niveau de la tâche de l’exemple de projet Aspose.Page pour 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}