WPF, конфигуриране и управление на печат

До сега, цялото внимание бе насочено към два метода клас PrintDialog: PrintVisual () и PrintDocument (). Това е всичко, което е необходимо, за да се получи задоволителна печат, но ако искате да управлявате настройките на заданията за принтер и печат, ще трябва нещо друго. Отправната точка е клас PrintDialog ().

Подкрепа за настройки за печат

Примерите в предходните членове, то е било показано как класа PrintDialog ви позволява да използвате принтера и неговите настройки. Въпреки това, ако тези примери се използват за повече от един печат, ще забележите някои аномалия. Всеки път, когато се върне в Print възстановите стандартните настройки за печат диалоговия прозорец. Отново, ние трябва да изберете принтера, и напълно да я персонализирате.

Можете да запазите тази информация и да я използвате отново. Един добър подход е да се запази PrintDialog като променлива член на прозореца. По този начин, за да се създаде PrintDialog преди всеки нов печат няма да се налага операция - просто ще използвате съществуващ обект. Това работи, защото PrintDialog капсулира обхвата на принтера и инсталиране на принтера чрез две свойства: PrintQueue и PrintTicket.

PrintQueue собственост се отнася до обект System.Printing.PrintQueue, която е печат опашката за избрания принтер. PrintQueue също капсулира значително количество ресурси за управление на принтера и от него работни места.

PrintTicket собственост се отнася до System.Printing.PrintTicket обект, който определя настройките за заданието за печат. Тя включва подробности като резолюция на печат и двустранен печат. Ако желаните настройки PrintTicket могат да бъдат коригирани чрез софтуер. Клас дори PrintTicket включва GetCmlStream () и SaveTo (). позволява сериализирани обект поток и конструктор, който позволява PrintTicket пресъздаде обекта в потока. Това е една интересна опция, когато трябва да се запази някои настройки на принтера между сесиите приложение. (Например, тази функция ще бъде полезно да се създаде средство за "профили на пресата.")

Докато свойствата на PrintQueue и PrintTicket останат в съответствие избраният принтер и неговите свойства ще бъдат същите всеки път, когато отворите диалоговия прозорец Печат. Ето защо, ако искате да се многократно създаване на диалог PrintDialog, можете просто да зададете тези свойства, за да запазите потребителски настройки.

диапазони Принтирай страницата

Един означава PrintDialog клас все още не е разглеждан. Можете да позволи на потребителя да изберете да отпечатате само част от печатната продукция, използвайки текстово поле Страници (Pages) в Page Range (диапазон на страници).

се текстово поле позволява на потребителя да определи група от страници, влизайки в началото и края на страницата (например 4-6), или изберете конкретна страница (например, 4). Тя не се допуска попадането в няколко поредици от страници (като например 1-3.5). Текстово поле изключени Страници по подразбиране. Преди да се обадите ShowDialog (), за да може да се инсталира PrintDialog.UserPageRangeEnabled собственост, за да е истина.

Опции за избор (изолиран фрагмент) и текущата страница (текущата страница) остават инвалиди, защото те не се поддържат от този клас PrintDialog. Задаване на свойства и MaxPage MinPage ограничени до страници, които потребителят може да избере.

След показване на диалоговия прозорец за печат, можете да определите дали потребителят има възможност да въведете поредица от страници, чрез проверка PageRangeSelection собственост. Ако тя съдържа стойност UserPages, следователно, има набор от страници. PageRange имот представлява началната страница (PageRange.PageFrom) и в края на документа (PageRange.PageTo). Кодът може да вземе предвид ценностите и отпечатайте само страниците, поискани.

управление на опашката за печат

Обикновено, приложението на клиента разполага с ограничени възможности за взаимодействие с опашката за печат. След като задачата е започнало, може да искате да се покаже състоянието му, или (рядко), за да осигури възможност за пауза, възобновяване или отмените заданието. WPF класове печат отиват далеч отвъд това ниво и ще ви позволи да се изгради инструменти, които могат да управляват локални и отдалечени опашки за печат.

Класове в името System.Printing оферта подкрепа за управление на опашката за печат. За да изпълните по-голямата част от работата няколко основни класове, които са изброени в таблицата по-долу:

Уроци Управление на печата

PrintServer и LocalPrintServer

Представлява компютър, който осигурява на принтер или друго устройство. ( "Друг устройство" може да бъде принтер с мрежовото оборудване, която служи като сървър за печат.)
Използването клас PrintServer, можете да получите колекция от предмети за даден PrintQueue компютър. Можете да използвате и LocalPrintServer клас, който произлиза от PrintServer, която винаги представлява текущата компютъра. Той добавя, собственост DefaultPrintQueue. с които можете да получите (или набор) принтера по подразбиране, и статичен метод GetDefaultPrintQueue (). който може да се използва без да се създава копие на LocalPrintServer.

Принтерът е конфигуриран на сървъра за печат. PrintQueue клас дава информация за състоянието на принтера и управлява своята опашка за печат. Можете също така да получите колекция от предмети PrintQueueJoblnfo за този принтер.

Е задача, която е изпратена до опашката на принтера. Можете да получите информация за състоянието му или да го изтриете.

С помощта на тези основни съставки, можете да създадете програма, която започва отпечатването без намеса на потребителя:

Можете също така да създавате и използвате PrintTicket обект на PrintDialog, за да изберете други настройки за печат.