Нужна помощь с изменением PrintTickets через XML
Выполнение некоторой работы по управлению печатью через инфраструктуру System.Printing (основными классами являются PrintQueue, PrintTicket и PrinterCapabilities). Как и с большинством вещей, над которыми я работал в последнее время, об этом чертовски мало информации. Я надеюсь собрать некоторую полезную информацию в этом вопросе, чтобы помочь конкретизировать эту тему.
PrintTickets дает разработчикам хорошее представление о наиболее распространенных настройках конфигурации для печати. Это удачно, потому что я не хотел бы делать это старым способом DEVMODE (вы можете конвертировать двоичный поток DEVMODE в и из PrintTickets, что удобно!).
Проблема в том, что есть много принтеров, каждый с уникальной конфигурацией. Они не попадают в красивые свойства и перечисления, созданные для PrintTickets. Если вам нужно настроить принтер, параметры которого выходят за рамки этого интерфейса, вам нужно сериализовать ваш PrintTicket в xml и изменить его там.
Когда вы работаете с PrintTicket xml, ваша жизнь управляется тремя или более схемами: две от Microsoft и одна или более от производителя принтера. Две схемы MS
- PrintSchemaFramework http://schemas.microsoft.com/windows/2003/08/printing/printschemaframework
- PrintSchemaKeywords http://schemas.microsoft.com/windows/2003/08/printing/printschemakeywords
Одна из первых проблем, с которыми я столкнулся при работе с необработанным 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 ответа
Проверьте тему о выборе лотков на:
CAnderson и Jo0815 опрашивают PrintCueabilities PrintQueue, чтобы запросить функции, связанные с входными лотками. После этого они загружают XML из DefaultPrintTicket в XMLDocument, чтобы вставить узлы для указания бина, записать XMLDocument в поток и затем создать новый PrintTicket из этого потока. (Вероятно, более прямой подход по сравнению с процессом конкатенации и последующего удаления дубликатов, описанным в разделе "Процедура создания класса WholePrintTicket".)
Те же самые методы могут быть применены к другим функциям, не предоставляемым стандартным PrintTicket.
Кажется, что то, что вы пытаетесь сделать, описано в общих чертах в:
В настоящее время существует спецификация схемы печати (от 28 июля 2013 г.) на веб-сайте Microsoft по адресу
http://msdn.microsoft.com/en-us/windows/hardware/gg463385.aspx
Это спецификация 300+, а также схема для http://schemas.microsoft.com/windows/2003/08/printing/printschemaframework