IPrintTicketProvider::ConvertPrintTicketToDevMode()の留意点

概要

この資料では、IPrintTicketProvider::ConvertPrintTicketToDevMode() に通知される PrintTicket の留意点について説明します。

詳細

XPS Doucment には、必ず一つ以上の PrintTicket が含まれています。しかしながら、PrintTicket では、Empty PrintTicket の利用が許容されており、Feature が含まれていない PrintTicket を持つ XPS Document が存在します。
このような Empty PrintTicket しか持たない XPS Document の印刷を行う場合、IPrintTicketProvider::ConvertPrintTicketToDevMode() に Empty PrintTicket が通知されることがあり、DEVMODE 構造体の変換元となる PrintTicket の Feature が取得できません。

解決方法

Empty PrintTicket が IPrintTicketProvider::ConvertPrintTicketToDevMode() に通知された場合、プリンタ ドライバ毎に任意の判断基準を設けて、その基準に基づき DEVMODE 構造体に設定する値を決定する必要があります。
一般的な判定基準としては、プリント キューに設定されているユーザ毎のデフォルト DEVMODE 構造体である PRINTER_INFO_9 構造体の DEVMODE 構造体を利用します。また、PRINTER_INFO_9 構造体が設定されていない場合は、プリント キューのデフォルト DEVMODE 構造体が設定されている PRINTER_INFO_8 構造体を利用します。
なお、PRINTER_INFO_2 構造体に設定されている DEVMODE 構造体は、ユーザ毎のデフォルト DEVMODE 構造体の取得を試行し、取得できない場合にプリント キューのデフォルト DEVMODE 構造体を取得するため、一般的な判断基準で実装する場合、PRINTER_INFO_2 構造体を利用すれば処理が簡略化できます。
プロパティ

文書番号:2920249 - 最終更新日: 2016/09/29 - リビジョン: 1

Windows Driver Kit 7.0, Windows Driver Kit 8.0, Windows Driver Kit 8.1

フィードバック