Udostępnij za pośrednictwem


Plik konfiguracji potoku filtrującego

Ważny

Nowoczesna platforma drukowania jest preferowanym sposobem komunikacji z drukarkami w systemie Windows. Zalecamy używanie sterownika klasy skrzynki odbiorczej IPP firmy Microsoft wraz z aplikacjami do obsługi drukowania (PSA), aby dostosować środowisko drukowania w systemie Windows 10 i 11 na potrzeby opracowywania urządzeń drukarki.

Aby uzyskać więcej informacji, zobacz przewodnik projektowania aplikacji wspierającej drukowanie .

Plik XML konfiguracji potoku filtra , o nazwie, definiuje następujące elementy:

  • Kolejność filtrów w potoku. Ta kolejność jest definiowana przez kolejność elementów XML w pliku konfiguracji potoku filtru.

  • Filtrowanie interfejsów. Te interfejsy są definiowane przez atrybuty XML w pliku konfiguracji potoku filtru.

  • Formaty wejściowe i wyjściowe dla każdego filtru. Te formaty są definiowane przez elementy XML w pliku konfiguracji filtru potoku.

Poniższy przykład kodu przedstawia typowy plik konfiguracyjny filtra potoku:

<Filters>
    <Filter      dll="XDWMark.dll"
 clsid="{D647D658-BEF6-415f-AFAC-070D64074C5D}"
                name="Watermark filter">
        <Input  guid="{b8cf8530-5562-47c4-ab67-b1f69ecf961e}" comment="IID_IXpsDocumentProvider"/>
        <Output guid="{4368d8a2-4181-4a9f-b295-3d9a38bb9ba0}" comment="IID_IXpsDocumentConsumer"/>
    </Filter>
 <Filter dll="XDScale.dll"
 clsid="{B9B52406-92D3-4721-86E6-3CF78F6D5FC5}"
 name="Page Scaling filter">
 <Input guid="{4d47a67c-66cc-4430-850e-daf466fe5bc4}" comment="IID_IPrintReadStream"/>
 <Output guid="{65bb7f1b-371e-4571-8ac7-912f510c1a38}" comment="IID_IPrintWriteStream"/>
 </Filter>
    <Filter      dll="XDColMan.dll"
 clsid="{8E56FC37-0799-447e-A643-16F4FB18244C}"
 name="Colour Management filter">
         <Input guid="{b8cf8530-5562-47c4-ab67-b1f69ecf961e}" comment="IID_IXpsDocumentProvider"/>
        <Output guid="{4368d8a2-4181-4a9f-b295-3d9a38bb9ba0}" comment="IID_IXpsDocumentConsumer"/>
    </Filter>
    <Filter      dll="XDBook.dll"
 clsid="{7DFC96C6-CEA2-46d8-B354-887C47B7986D}"
                name="Booklet filter">
         <Input guid="{b8cf8530-5562-47c4-ab67-b1f69ecf961e}" comment="IID_IXpsDocumentProvider"/>
        <Output guid="{4368d8a2-4181-4a9f-b295-3d9a38bb9ba0}" comment="IID_IXpsDocumentConsumer"/>
    </Filter>
    <Filter      dll="XDNUp.dll"
 clsid="{1b5bee16-511c-440f-8017-2123f481091a}"
                name="NUp filter">
         <Input guid="{b8cf8530-5562-47c4-ab67-b1f69ecf961e}" comment="IID_IXpsDocumentProvider"/>
        <Output guid="{4368d8a2-4181-4a9f-b295-3d9a38bb9ba0}" comment="IID_IXpsDocumentConsumer"/>
    </Filter>
</Filters>

Słowa kluczowe prywatne

Moduł konfiguracji XPSDrv może umieścić prywatne słowa kluczowe w elemencie PrintTicket, gdy obsługuje zdarzenie dokumentu XPS podczas wywołania funkcji DrvDocumentEvent. Te wpisy PrintTicket są następnie odczytywane przez filtry przetwarzania w potoku filtrów drukowania, podczas gdy filtry te odczytują PrintTicket.

Filtr potoku: zbiór właściwości

Moduł konfiguracji może również użyć worka właściwości filtru w potoku do przechowywania danych lub przekazywania informacji do potoku filtrów. Aby udostępnić usługi konfiguracji przy użyciu zbioru właściwości, moduł konfiguracji musi wyeksportować metodę DrvPopulateFilterServices. Ponadto plik konfiguracji potoku filtracji musi zawierać element <FilterServiceProvider> dla każdej usługi. Moduł dostawcy musi implementować i eksportować funkcję DllCanUnloadNow. Zazwyczaj ci dostawcy publikują interfejsy COM w zasobniku właściwości. Dostawca musi pozostać aktywny, gdy te interfejsy są używane.

Inny element, <OptionalFilterServiceProvider>, umożliwia menedżerowi potoków kontynuowanie zadania drukowania, jeśli biblioteka DLL dostawcy usług jest niedostępna. Poszczególne filtry muszą definiować swoje zachowanie w przypadku braku opcjonalnego dostawcy usług. W przeciwnym razie, jeśli jest używana <FilterServiceProvider> i nie można załadować biblioteki DLL, zadanie zakończy się niepowodzeniem. Element <OptionalFilterServiceProvider> jest obsługiwany w systemie Windows 7 lub nowszym.

Poniższy przykład kodu przedstawia funkcję DrvPopulateFilterServices:

HRESULT
DrvPopulateFilterServices(
    __in IPrintPipelinePropertyBag  *pPropertyBag
    );

Aby uzyskać więcej informacji na temat poprzedniej funkcji, zobacz DrvPopulateFilterServices.

Poniższy przykład kodu przedstawia składnię XML dla elementu <FilterServiceProvider> w pliku konfiguracji potoku filtru:

<Filters>
    <Filter ... />
    <FilterServiceProvider dll = "providerA.dll"/>
    <FilterServiceProvider dll = "providerB.dll"/>
</Filters>

Tryb przeplatania dla urządzenia wyjściowego

Przeplatanie odnosi się do sposobu, w jaki poszczególne części zasobów dokumentu XPS są przesyłane strumieniowo w połączeniu z elementami dokumentu FixedPage. Gdy potok filtrujący tworzy model obiektu dokumentu XPS dla pierwszego filtru z interfejsami dokumentów XPS w potoku, kolejność przeplatania danych pliku buforowania XPS nie jest już przestrzegana. Jednak ostatni filtr w potoku, który używa interfejsu dokumentu XPS, może określić kolejność przeplatania w pliku konfiguracji filtru, aby potok mógł jej użyć podczas serializacji zawartości XPS. Wybranie kolejności przeplatania, która jest najbardziej zgodna z urządzeniem wyjściowym lub plikiem wyjściowym, może zwiększyć wydajność późniejszego przetwarzania dokumentów.

Poniższy przykładowy filtr jest fragmentem poprzedniego przykładowego pliku konfiguracji filtru, który został zmodyfikowany, aby pokazać, jak używać opcji przeplatania. Mimo że w tym przykładzie przedstawiono obie opcje przeplatania na potrzeby ilustracji, rzeczywisty plik konfiguracji filtru ma tylko jeden element <Interleaving> w definicji filtru.

    <Filter     dll="XDNUp.dll"
      clsid="{1b5bee16-511c-440f-8017-2123f481091a}"
        name="NUp filter">
      <Input guid="{b8cf8530-5562-47c4-ab67-b1f69ecf961e}" comment="IID_IXpsDocumentProvider"/>
       <Output guid="{4368d8a2-4181-4a9f-b295-3d9a38bb9ba0}" comment="IID_IXpsDocumentConsumer"/>
     <Interleaving mode="ResourcesFirst"\>
     <Interleaving mode="MarkupFirst"\>
    </Filter>

Potok filtrów obsługuje następujące kolejności przeplatania:

  • Zamówienie przeplatania strumieni ResourcesFirst powoduje, że każdy zasób zależny jest przesyłany przed stroną FixedPage, która od niego zależy. Ta kolejność przeplatania jest dobra dla sterowników drukarek i drukarek do bezpośredniego użytku, ponieważ udostępnia zasoby czcionek i obrazów, których drukarka wymaga, aby zrenderować zawartość tekstu i strony tuż przed rozpoczęciem tego procesu.

  • MarkupFirst strumieniowanie z przeplataniem przesyła tekst i znaczniki dokumentu oraz informacje o tym, jak zasób będzie używany, zanim zostanie przesłany rzeczywisty zasób. Ta kolejność przeplatania jest najlepsza w przypadku miejsc docelowych plików archiwalnych i aplikacji, które wyświetlają dokument online.

Archiwizacja zoptymalizowanego wyjścia XPS

Ta funkcja umożliwia sterownikom wydruku wyraźne żądanie wyjścia XPS zoptymalizowanego pod kątem archiwum jako plik buforowy. W systemie Windows 8 Microsoft XPS Document Writer w wersji 4 (MXDW) generuje to wyjściowe XPS gotowe do archiwizacji za pośrednictwem ścieżki kodu, która jest dostępna tylko dla MXDW w Microsoft XPS Document Converter (MXDC). Dzięki temu sterownik wydruku może wygenerować ten zoptymalizowany pod kątem archiwum plik XPS z usługi MXDC.

Poniższy przykład kodu przedstawia składnię XML do używania elementu <Archiwum> w pliku konfiguracji potoku filtrów w celu włączenia tej funkcji:

<Filters>
    ...
    <Archive enabled="true"/>
</Filters>