Нужна помощь с изменением PrintTickets через XML - PullRequest
3 голосов
/ 22 января 2009

Выполнение некоторой работы по управлению печатью через инфраструктуру System.Printing (основными классами являются PrintQueue, PrintTicket и PrinterCapabilities). Как и с большинством вещей, над которыми я работал в последнее время, чертовски мало информации об этом. Я надеюсь собрать некоторую полезную информацию в этом вопросе, чтобы помочь конкретизировать эту тему.

PrintTickets дает разработчикам хорошее представление о наиболее распространенных настройках конфигурации для печати. Это повезло, потому что я не хотел бы делать это старым способом DEVMODE (вы можете конвертировать двоичный поток DEVMODE в и из PrintTickets, что удобно!).

Проблема в том, что существует много принтеров, каждый из которых имеет уникальную конфигурацию. Они не попадают в красивые свойства и перечисления, созданные для PrintTickets. Если вам нужно настроить принтер, параметры которого выходят за рамки этого интерфейса, вам нужно сериализовать ваш PrintTicket в xml и изменить его там.

Когда вы работаете с PrintTicket xml, ваша жизнь управляется тремя или более схемами: две от Microsoft и одна или более от производителя принтера. Две схемы MS:

Одна из первых проблем, с которыми я столкнулся при работе с необработанным xml, заключается в том, что я не могу найти никаких XSD, охватывающих эти схемы.

Кто-нибудь знает, где я могу получить XSD для этих схем?

Вторая большая проблема, с которой я столкнулся, - это отображение ввода пользователя в PrintTicket xml. Оптимально, я хотел бы взять пользовательский ввод, скажем, «Лоток 3», и отобразить его через PrintCapabilities, чтобы определить значение параметра, устанавливаемого для этой функции. Документация по возможностям печати несколько неясна, и я боюсь, что она полна крайних случаев, которые вернутся и укусят меня, если я не сделаю это правильно.

У кого-нибудь есть хорошие примеры для изменения PrintTicket XML?

Это хорошая отправная точка для этой вики ...


Обновление по вопросу 1:

Отправил электронное письмо на адрес, полученный от WinHEC PPT в 2005 году, и получил реальный ответ от Джастина Хатчингса, менеджера программы для Windows Experience - Документы и печать (круто, нет?):

Will

Нет XSD для пространств имен схемы печати. Вам следует ознакомиться со спецификацией схемы печати 1.0 и проверить соответствие с ней. http://www.microsoft.com/whdc/xps/downloads.mspx

У нас также есть проверка PrintSchema, встроенная в PrintVerifier. Более подробную информацию о получении и настройке Print Verifier можно получить по следующим ссылкам:

Ответы [ 3 ]

1 голос
/ 29 января 2009

Проверьте тему выбора лотков по адресу:

http://social.msdn.microsoft.com/forums/en-US/windowsxps/thread/f5859148-26f1-4e89-949c-180413bcc898/

CAnderson и Jo0815 опрашивают PrintCueabilities PrintQueue, чтобы запросить функции, связанные с входными лотками. После этого они загружают XML из DefaultPrintTicket в XMLDocument, чтобы вставить узлы для указания корзины, записать XMLDocument в поток и затем создать новый PrintTicket из этого потока. (Возможно, более простой подход по сравнению с процессом объединения и последующего удаления дубликатов, описанным в Процедура создания класса WholePrintTicket .)

Те же методы могут быть применены к другим функциям, не предоставляемым стандартным PrintTicket.

1 голос
/ 28 января 2009

Кажется, что то, что вы пытаетесь сделать, описано в общих чертах по адресу:

http://msdn.microsoft.com/en-us/library/aa970573.aspx#ExtendingthePrintTicketClass

0 голосов
/ 01 ноября 2013

Теперь на веб-сайте Microsoft по адресу

имеется спецификация схемы печати (от 28 июля 2013 г.)

http://msdn.microsoft.com/en-us/windows/hardware/gg463385.aspx

Имеется спецификация 300+, а также схема для http://schemas.microsoft.com/windows/2003/08/printing/printschemaframework

...