Поделиться через


Спецификация манифеста MSIX для поддержки печати виртуальным принтером

Эта функция позволяет печатать на виртуальном принтере без необходимости устаревших драйверов печати версии 3/V4, так как Windows планирует нерекомендуть сторонние драйверы печати версии 3/V4. Для получения дополнительной информации см. в разделе "Завершение плана обслуживания сторонних драйверов принтеров для Windows".

Архитектура виртуального принтера упрощает реализацию программных принтеров без сторонних драйверов. Благодаря этой архитектуре независимые поставщики программного обеспечения могут реализовать программный принтер в качестве приложения, реализующего функции, поддерживаемые сторонними драйверами версии 3/V4.

В этой статье описывается, как приложение может зарегистрировать себя как программный принтер в манифесте.

Дополнительные сведения см. в следующих статьях:

Тема Описание
руководство по проектированию приложений для поддержки печати Предоставляет рекомендации и примеры для изготовителей оборудования принтера и IHV, которые реализуют приложение поддержки печати (PSA) для своего устройства.
Руководство по проектированию API приложения для поддержки печати версии 3 Предоставляет рекомендации и примеры для изготовителей оборудования принтера и IHV, которые реализуют приложение поддержки печати версии 3 (PSA) для своего устройства.
Руководство по проектированию api поддержки службы поддержки печати версии 4 Предоставляет рекомендации и примеры для изготовителей оборудования принтера и IHV, которые реализуют приложение поддержки печати версии 4 (PSA) для своего устройства.
Ассоциация приложений для поддержки печати Предоставляет рекомендации и примеры для связывания приложения поддержки печати (PSA) с принтером.

Приложение поддержки печати (PSA) — это архитектура, представленная для помощи ОЕМам в добавлении настроек для принтеров IPP без использования драйверов от третьих лиц. Чтобы упростить переход на программный принтер, все API входят в пространство имен API PrintSupportApp и повторно используют некоторые контракты PSA, которые применимы к архитектуре виртуального принтера.

Новый контракт манифеста аналогичен контракту Windows.printSupportWorkflow, но этот контракт требует дополнительных записей, поскольку используется для установки виртуального принтера.

Новый обработчик расширения развертывания Windows (DEH) устанавливает виртуальный принтер на основе декларации манифеста, а компоненты Windows Print вызывают приложение, когда пользователь печатает на установленный виртуальный принтер.

Атрибуты манифеста

  • printSupport:Extension — элемент расширения виртуального принтера

  • категория - Windows.printSupportVirtualPrinterWorkflow новый контракт для приложения, реализующего виртуальный принтер

  • PrintSupportVirtualPrinter - Каждая запись определяет одну очередь печати программной конечной точки, которую необходимо установить вместе с приложением. Каждая запись PrintSupportVirtualPrinter может иметь следующие атрибуты:

    • PreferredInputFormat . Этот атрибут указывает предпочтительный формат PDL входных данных для виртуального принтера. Система печати Windows создает этот формат, прежде чем предоставлять PDL-данные виртуальному принтеру для всех путей печати. Поле может быть только одним из следующих значений: application/oxps или application/postscript. Установка завершается ошибкой, если в этом поле указаны другие форматы. Если поле не указано, application/oxps устанавливается как предпочтительный формат PDL для установленного виртуального принтера.

    • OutputFileTypes. Если этот атрибут указан в манифесте appx, система печати Windows создает очередь принтера, помеченную как файловый принтер, и при запуске печати приложения на виртуальном принтере отображается диалоговое окно «Сохранить как». Значения этого поля должны содержать целевые расширения файлов, такие как pdf/pwgr/ps и т. д. Эти значения хранятся в данных драйвера и добавляются в раздел "Сохранить как диалоговое окно" в качестве разрешенных расширений. Если виртуальный принтер не хочет печатать файлы (это включает виртуальные принтеры, которые хранят данные печати в облаке или принтерах, которые отправляют данные в приложение, например OneNote), то это поле не должно быть добавлено в манифест.

    • Поддерживаемые форматы. Этот элемент можно использовать в Виртуальном Принтере для указания всех форматов PDL, которые он может обрабатывать. Это используется для сквозной печати приложений, таких как Microsoft Edge, чтобы определить поддерживаемый формат, например PDF, и напрямую передать pdf-поток виртуальному принтеру без каких-либо изменений, внесенных системой Печати Windows. Это поле может иметь SupportedFormat в качестве дочерних элементов.

      • SupportedFormat — элемент задает формат PDL для одиночного сквозного потока и может иметь следующие атрибуты.

        • type . Этот атрибут используется для указания поддерживаемого типа MIME, поддерживаемого виртуальным принтером.

        • MaxVersion . Этот атрибут указывает максимальную версию этого формата PDL, который может получать виртуальный принтер. Значение MaxVersion должно быть в формате MajorVersion.MinorVersion. Система печати Windows не может установить принтер, если он находится в любом другом формате. MajorVersion и MinorVersion могут быть только числами. Если присутствуют какие-либо символы, поле версии недопустимо и игнорируется.

  • PdcFile . Этот атрибут должен указывать на файл ресурсов в пакете приложения. Файл должен содержать содержимое в формате XML возможностей устройства печати, который предназначен для определения возможностей принтера и должен использоваться для определения любых пользовательских функций или параметров. Это обязательное поле и установка принтера завершается ошибкой, если значение отсутствует или содержимое файла не находится в допустимом формате PDC.

  • PdrFile . Если это указано, этот атрибут должен указывать на файл ресурсов в пакете приложения. Файл должен содержать ресурсы устройства печати в формате XML. Это поле должно быть предоставлено, если приложение хочет локализовать настраиваемые параметры печати. Это поле является необязательным, а локализация ресурсов для параметров печати обрабатывается системой печати, если это поле отсутствует.

  • DisplayName — указывает имя очереди виртуальных принтеров, которая будет установлена. Ограничения этой строки совпадают с ограничениями, которые у вас есть для имени принтера Windows.

  • PrinterUri — задает уникальный URI, который можно использовать приложениями PSA для идентификации принтера. Одно приложение виртуального принтера может указать несколько конечных точек программного обеспечения, что приводит к установке нескольких принтеров. Поле PrinterUri можно использовать для различения этих принтеров. Данные URI предоставлены из API IppPrintDevice::PrinterUri. Если универсальный код ресурса (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