Маніпулювання друком квитків | Java

Вступ до схеми друку

Документи XPS і Об’єктна модель XPS можуть використовувати об’єкти квитка друку, представлені в специфікації схеми друку, щоб визначити параметри друку документа для принтерів і програм для перегляду.

Схема друку — це ієрархічна схема на основі XML, яка використовується для організації та опису властивостей принтера або завдання друку. Він складається з двох основних частин: Ключові слова схеми друку та Система схеми друку. Ключові слова схеми друку – це екземпляри елементів, які описують атрибути принтера та призначення форматування завдання друку, тоді як Framework Print Schema визначає набір типів елементів XML в ієрархічній структурі та вказує, як ці типи елементів можна використовувати разом.

Технологія Print Schema, відома як PrintTicket, створена з використанням ключових слів схеми друку, визначених Framework Print Schema. Специфікація схеми друку дозволяє розширювати схему третіми сторонами, дозволяючи користувачам схеми друку виходити за межі екземплярів Property, Feature, Option або ParameterInit, визначених ключовими словами схеми друку. Екземпляри сторонніх елементів можна додати до тих, що визначені ключовими словами схеми друку; однак приватні сторонні екземпляри Property мають належати до простору імен, який чітко пов’язаний із третьою стороною, яка створила простір імен.

Підтримка Print Ticket в Aspose.Page для Java

API Aspose.Page для Java містить набір класів, які інкапсулюють елементи, визначені ключовими словами схеми друку. Через значну кількість цих класів у цій статті ми обговоримо лише кілька найпоширеніших методів маніпулювання друкованими квитками в документі XPS за допомогою API Aspose.Page. Ми почнемо з обговорення екземпляра кожного класу функцій, який ми хочемо включити в заявку на друк, а потім покажемо, як включити ці функції в заявку на друк.

Визначення вхідного ящика

Функція JobInputBin визначає встановлений вхідний ящик у пристрої або повний список підтримуваних контейнерів для пристрою. Це дозволяє визначати вхідний лоток для кожного завдання. Існують також функції DocumentInputBin і PageInputBin, які дозволяють указати вхідний ящик для кожного документа та для кожної сторінки відповідно. Будь-який документ Print Ticket має містити лише одну з трьох характеристик. Усі вони походять від класу InputBin і мають конструктори з однаковою сигнатурою, тому ми будемо використовувати JobInputBin для демонстраційних цілей.

Рядок коду Java

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 є взаємовиключними; лише один має бути вказаний в одному друкованому квитку.

Кожен параметр може містити властивості 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 визначає орієнтацію аркуша фізичного носія. Список доступних параметрів можна знайти в розділі класу PageOrientation.PageOrientationOption довідника API. Ось приклад того, як створити екземпляр цієї функції:

1new PageOrientation(PageOrientation.PageOrientationOption.Landscape);

Визначення дуплексного режиму для виведення

Функція JobDuplexAllDocumentsContiguously описує характеристики дуплексного виведення. Функція двостороннього друку дає змогу друкувати на обох сторонах носія, при цьому всі документи в завданні друкуються безперервно. JobDuplexAllDocumentsContiguously і DocumentDuplex є взаємовиключними, і саме драйвер визначає, як обробляються обмеження між цими ключовими словами. Останнє ключове слово означає, що кожен документ у завданні дуплексується окремо.

Для цієї функції доступні три параметриOneSided, twoSidedLongEdge і twoSidedShortEdge. Перший не має властивостей, а два інших параметризовані за допомогою Duplex.DuplexMode.

Наприклад, якщо ви хочете вказати двосторонній друк для файлу XPS, щоб сторінка перегорталася паралельно MediaSizeHeight, ви можете зробити це таким чином:

1new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.twoSidedLongEdge(Duplex.DuplexMode.Automatic));

Якщо ви віддаєте перевагу односторонньому друку, ви можете включити таку функцію в квиток для друку:

1new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.OneSided);

Визначення параметрів кольору для виведення

Функція PageOutputColor описує характеристики параметрів кольору для виведення. Для цієї функції доступні три варіанти — Колір, Відтінки сірого та Монохромний, кожен із двома цілочисельними властивостями — DeviceBitsPerPixel і DriverBitsPerPixel.

Якщо, наприклад, ви хочете, щоб ваш кольоровий принтер друкував файл XPS у відтінках сірого, ви можете включити таку функцію до квитка на друк:

1new PageOutputColor(PageOutputColor.PageOutputColorOption.Grayscale(0, 8));

Робота з друкованими квитками різного рівня

Якщо ви працюєте з файлом XPS, створеним кимось іншим, вам може знадобитися налаштувати його картку друку, якщо вона є. Щоб отримати квиток на друк на рівні завдання, ви можете просто викликати метод getJobPrintTicket() об’єкта XpsDocument:

1JobPrintTicket pt = document.getJobPrintTicket();

Щоб отримати квиток на друк для певного документа у файлі 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>);

де — масив змінної довжини функцій, придатних для друку квитка певного рівня. Якщо старий квиток для друку вже мав деякі функції, які ви намагаєтеся додати, вони будуть перезаписані новими екземплярами.

Якщо ви віддаєте перевагу не змінювати існуючі квитки друку, а натомість призначаєте абсолютно новий екземпляр, як у випадку з новим файлом XPS, тоді для квитка друку на рівні завдання слід використовувати метод setJobPrintTicket():

1document.setJobPrintTicket(new JobPrintTicket(<features>));

де <функції> — це масив змінної довжини функцій, придатних для квитка на друк рівня завдання. Якщо ви хочете призначити квиток друку для певного документа у файлі XPS, скористайтеся методом setDocumentPrintTicket():

1document.setDocumentPrintTicket(<n>, new DocumentPrintTicket(<features>));

Тут <n> означає номер документа у файлі XPS, а <features> — це масив змінної довжини функцій, придатний для квитка на друк на рівні документа.

Нарешті, якщо ви хочете призначити квиток друку для певної сторінки у файлі XPS, вам слід скористатися методом setPagePrintTicket():

1document.setPagePrintTicket(<m>, <n>, new PagePrintTicket(<features>));

де — це номер документа у файлі XPS, — номер сторінки в m-му документі, а — масив змінної довжини відповідних функцій для квитка для друку на рівні сторінки.

Нижче наведено повний приклад коду для квитка друку на рівні завдання з прикладу проекту Aspose.Page для 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}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.