Робота з друком квитків | .NET

Роздрукувати схему

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

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

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

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

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

Як вказати вхідний ящик

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

Як вказати вихідний бак

Функція 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, створеним кимось іншим, ви можете змінити його квиток друку, якщо він присутній. Щоб отримати квиток на друк на рівні завдання, ви можете просто скористатися властивістю JobPrintTicket об’єкта XpsDocument:

1JobPrintTicket pt = document.JobPrintTicket;

Щоб отримати квиток на друк для певного документа у файлі XPS, слід скористатися методом GetDocumentPrintTicket():

1DocumentPrintTicket pt = document.GetDocumentPrintTicket(<n>);

де <n> - це номер документа у файлі XPS.

Щоб отримати квиток на друк для певної сторінки у файлі XPS, слід скористатися методом GetPagePrintTicket():

1PagePrintTicket pt = document.GetPagePrintTicket(<m>, <n>);

де <m> — номер документа у файлі XPS, а <n> — номер сторінки в m-му документі.

Після отримання екземпляра квитка для друку, якщо він не нульовий, ви можете додати свої функції, створені, як показано в розділах вище:

1pt.Add(<features>);

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

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

1document.JobPrintTicket = 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 для .NET:

 1// For complete examples and data files, please go to https://github.com/aspose-page/Aspose.Page-for-.NET
 2// The path to the documents directory.
 3string dir = RunExamples.GetDataDir_WorkingWithPrintTickets();
 4
 5// Create new XPS document
 6using (XpsDocument document = new XpsDocument())
 7{
 8    // Set a custom job-level print ticket
 9    document.JobPrintTicket = 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(dir + "output1.xps");
25}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.