Нужна помощь с изменением PrintTickets через XML

Выполнение некоторой работы по управлению печатью через инфраструктуру 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 - Documents and Printing (круто, нет?):

Будет,

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

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

3 ответа

Решение

Проверьте тему о выборе лотков на:

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.

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

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

В настоящее время существует спецификация схемы печати (от 28 июля 2013 г.) на веб-сайте Microsoft по адресу

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

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

Другие вопросы по тегам