次の方法で共有


印刷サポート仮想プリンターの MSIX マニフェスト仕様

この機能を使用すると、Windows がサード パーティの V3/V4 印刷ドライバーを非推奨にする予定であるため、従来の V3/V4 印刷ドライバーを必要とせずに、仮想プリンターに印刷できます。 詳細については、「Windowsのサード パーティ製プリンター ドライバーのサービス終了プラン」を参照してください。

仮想プリンター アーキテクチャは、サード パーティ製ドライバーのないソフトウェア プリンターの実装を容易にします。 このアーキテクチャにより、ISV (独立系ソフトウェア ベンダー) は、サードパーティの V3/V4 ドライバーで現在サポートされている機能を実装するアプリケーションとしてソフトウェア プリンターを実装できます。

この記事では、アプリケーション自体をソフトウェア プリンターとしてマニフェストに登録する方法について説明します。

詳細については、次の記事を参照してください。

トピック 説明
印刷サポート アプリの設計ガイド デバイスの印刷サポート アプリ (PSA) を実装しているプリンター OEM および IHV のガイダンスと例を示します。
印刷サポート アプリ v3 API 設計ガイド デバイスの v3 印刷サポート アプリ (PSA) を実装しているプリンター OEM および IHV のガイダンスと例を示します。
印刷サポート アプリ v4 API 設計ガイド デバイスの v4 印刷サポート アプリ (PSA) を実装しているプリンター OEM および IHV のガイダンスと例を示します。
印刷サポート アプリの関連付け 印刷サポート アプリ (PSA) をプリンターに関連付けるガイダンスと例を示します。

印刷サポート アプリ (PSA) は、IHV がサードパーティ製ドライバーを使用せずに IPP プリンターにカスタマイズを追加するために導入されたアーキテクチャです。 ソフトウェア プリンターへの移行を容易にするために、すべての API は PrintSupportApp API 名前空間の一部であり、仮想プリンター アーキテクチャに適用できる一部の PSA コントラクトを再利用します。

新しいマニフェスト コントラクトは、Windows.printSupportWorkflow コントラクトに似ていますが、このコントラクトは仮想プリンターのインストールに使用されるため、より多くのエントリを必要とします。

新しい Windows 展開拡張機能ハンドラー (DEH) は、マニフェスト宣言に基づいて仮想プリンターをインストールし、Windows 印刷コンポーネントは、ユーザーがインストールされた仮想プリンターに印刷するときにアプリを呼び出します。

マニフェスト属性

  • printSupport:Extension - 仮想プリンターの拡張エントリ

  • カテゴリ - Windows.printSupportVirtualPrinterWorkflow 仮想プリンターを実装するアプリの新しいコントラクト

  • PrintSupportVirtualPrinter - 各エントリは、アプリケーションと共にインストールする 1 つのソフトウェア エンドポイント印刷キューを指定します。 各 PrintSupportVirtualPrinter エントリには、次の属性を指定できます。

    • PreferredInputFormat - この属性は、仮想プリンターの優先入力 PDL 形式を示します。 Windows 印刷システムでは、すべての印刷パスの PDL データを仮想プリンターに渡す前に、この形式が生成されます。 このフィールドには、application/oxps または application/postscript のいずれかの値のみを指定できます。 このフィールドに他の形式が指定されている場合、インストールは失敗します。 フィールドが指定されていない場合、アプリケーション/oxps は、インストールされている仮想プリンターの優先 PDL 形式として設定されます。

    • OutputFileTypes - この属性が appx マニフェストで指定されている場合、Windows 印刷システムはファイル プリンターとしてマークされたプリンター キューを作成し、アプリケーションが仮想プリンターへの印刷を開始すると、ユーザーに [名前を付けて保存] ダイアログが表示されます。 このフィールドの値には、pdf/pwgr/ps などのターゲット ファイル拡張子が含まれている必要があります。これらの値はドライバー データに格納され、許可された拡張機能として [ダイアログとして保存] に追加されます。 仮想プリンターがファイルの印刷動作を望まない場合 (これには、クラウドに印刷データを格納する仮想プリンターや、OneNote などのアプリケーションにデータを送信するプリンターが含まれます)、このフィールドをマニフェストに追加しないでください。

    • サポートされている形式 - この要素は、仮想プリンターを使用して、処理できるすべての PDL 形式を指定できます。 これは、Microsoft Edge などのパススルー印刷アプリケーションに使用され、PDF などのサポートされている形式を識別し、Windows 印刷システムの間で変更を加えることなく、PDF ストリームを仮想プリンターに直接渡します。 このフィールドには、子要素 SupportedFormat を含めることができます。

      • SupportedFormat - 要素は、単一のパススルー PDL 形式を指定し、次の属性を持つことができます。

        • Type - この属性は、Virtual Printer でサポートされている MIME の種類を指定するために使用されます

        • MaxVersion - この属性は、仮想プリンターが受け取ることができる PDL 形式の最大バージョンを指定します。 MaxVersion 値の形式は MajorVersion.MinorVersion である必要があります。 Windows 印刷システムが他の形式の場合、プリンターのインストールに失敗します。 MajorVersion と MinorVersion には数値のみを指定できます。 文字が存在する場合、バージョン フィールドは無効になり、無視されます。

  • PdcFile - この属性は、アプリケーション パッケージ内のリソース ファイルを指す必要があります。 このファイルには、プリンター機能を定義するための印刷デバイス機能 XML 形式の内容が含まれている必要があり、カスタム機能/オプションまたはパラメーターを定義するために使用する必要があります。 これは必須フィールドであり、値が存在しない場合、またはファイルの内容が有効な PDC 形式でない場合、プリンターのインストールは失敗します。

  • PdrFile - 指定された場合、この属性はアプリケーション パッケージ内のリソース ファイルを指す必要があります。 ファイルには、XML 形式の印刷デバイス リソースが含まれている必要があります。 アプリでカスタム印刷設定をローカライズする場合は、このフィールドを指定する必要があります。 このフィールドは省略可能であり、印刷設定のリソースローカライズは、このフィールドが存在しない場合、印刷システムによって処理されます。

  • DisplayName - インストールする仮想プリンター キューの名前を指定します。 この文字列の制限は、Windows プリンター名の制限と同じです。

  • PrinterUri - PS アプリケーションがプリンターを識別するために使用できる一意の URI を指定します。 1 つの仮想プリンター アプリで複数のソフトウェア エンドポイントを指定でき、その結果、複数のプリンターがインストールされます。 PrinterUri フィールドを使用して、これらのプリンターを区別できます。 この URI 出力は、IppPrintDevice::P rinterUri API から提供されます。 URI が指定されていない場合、Windows はプリンターに任意の一意の URI を割り当てます。

マニフェスト サンプル

<Extensions> 
    <printsupport2:Extension Category="windows.printSupportVirtualPrinterWorkflow" EntryPoint="Tasks.PrintSupportWorkflowBackgroundTask">
        <PrintSupportVirtualPrinter DisplayName="ms-resource://PRINTER_NAME1" PrinterUri="contoso-psa:printer1" PreferredInputFormat="application/postscript" OutputFileTypes="ps;pdf" PdcFile="Config\PRINTER_PDC1.xml" PdrFile="Config\PRINTER_PDR1.xml">
            <SupportedFormats>
                <SupportedFormat Type="application/postscript" />
                <SupportedFormat Type="application/pdf" MaxVersion="1.7" />
            </SupportedFormats>
        </PrintSupportVirtualPrinter>
    </printsupport2:Extension>
    <printsupport2:Extension Category="windows.printSupportVirtualPrinterWorkflow" EntryPoint="Tasks.PrintSupportWorkflowBackgroundTask">
        <PrintSupportVirtualPrinter DisplayName="ms-resource://PRINTER_NAME2" PrinterUri ="contoso-psa:printer2" PreferredInputFormat="application/oxps" OutputFileTypes="pwgr;pdf" PdcFile="ms-appx:///PRINTER_PDC2.xml" PdrFile="ms-appx:///PRINTER_PDR2.xml">
            <SupportedFormats>
                <SupportedFormat Type="application/pdf" MaxVersion="1.7" />
            </SupportedFormats>
        </PrintSupportVirtualPrinter>
    </printsupport2:Extension>
    <printsupport:Extension Category="windows.printSupportExtension" EntryPoint="Tasks.PrintSupportExtensionBackGroundTask"/>
    <printsupport:Extension Category="windows.printSupportSettingsUI" EntryPoint="PrintSupportApp.App"/>
    <printsupport:Extension Category="windows.printSupportJobUI" EntryPoint="PrintSupportApp.App"/>
</Extensions>

Windows でのサード パーティ製プリンター ドライバーのサービス終了プラン

IppPrintDevice::PrinterUri