필터 파이프라인 구성 파일

중요

인쇄 지원 앱(PSA)과 함께 Microsoft의 IPP 받은 편지함 클래스 드라이버를 사용하여 프린터 장치 개발을 위해 Windows 10 및 11의 인쇄 환경을 사용자 지정하는 것이 좋습니다.

자세한 내용은 인쇄 지원 앱 디자인 가이드를 참조하세요.

필터 파이프라인 구성 파일은 다음을 정의하는 XML 파일입니다.

  • 파이프라인의 필터 순서입니다. 이 순서는 필터 파이프라인 구성 파일에서 XML 요소의 순서에 따라 정의됩니다.

  • 인터페이스를 필터링합니다. 이러한 인터페이스는 필터 파이프라인 구성 파일의 XML 특성에 의해 정의됩니다.

  • 각 필터에 대한 입력 및 출력 형식입니다. 이러한 형식은 필터 파이프라인 구성 파일의 XML 요소에 의해 정의됩니다.

다음 코드 예제에서는 일반적인 필터 파이프라인 구성 파일을 보여 줍니다.

<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>

Private 키워드

XPSDrv 구성 모듈DrvDocumentEvent 함수 호출 중에 XPS 드라이버 문서 이벤트를 처리할 때 PrintTicket 항목에 private 키워드를 넣을 수 있습니다. 그런 다음 이러한 PrintTicket 항목은 필터가 PrintTicket를 읽는 동안 인쇄 필터 파이프라인의 처리 필터에서 읽습니다.

필터 파이프라인 속성 모음

구성 모듈은 필터 파이프라인 속성 모음 을 사용하여 데이터를 저장하거나 필터 파이프라인에 정보를 전달할 수도 있습니다. 속성 모음을 사용하여 구성 서비스를 노출하려면 구성 모듈 이 DrvPopulateFilterServices 메서드를 내보내야 합니다. 또한 필터 파이프라인 구성 파일에는 각 서비스에 대한 FilterServiceProvider> 요소가 포함되어<야 합니다. 공급자 모듈은 DllCanUnloadNow 함수를 구현하고 내보내야 합니다. 일반적으로 이러한 공급자는 속성 모음에 COM 인터페이스를 게시합니다. 이러한 인터페이스를 사용하는 동안 공급자가 로드된 상태를 유지해야 합니다.

다른 요소인 <OptionalFilterServiceProvider>를 사용하면 서비스 공급자 dll을 사용할 수 없는 경우 파이프라인 관리자가 인쇄 작업을 계속할 수 있습니다. 개별 필터는 선택적 서비스 공급자가 없는 경우 해당 동작을 정의해야 합니다. 그렇지 않으면 FilterServiceProvider>를 사용하고 dll을 로드할 수 없는 경우< 작업이 실패합니다. <OptionalFilterServiceProvider> 요소는 Windows 7 이상에서 지원됩니다.

다음 코드 예제에서는 DrvPopulateFilterServices 함수를 보여 줍니다.

HRESULT
DrvPopulateFilterServices(
    __in IPrintPipelinePropertyBag  *pPropertyBag
    );

이전 함수에 대한 자세한 내용은 DrvPopulateFilterServices를 참조하세요.

다음 코드 예제에서는 필터 파이프라인 구성 파일의 FilterServiceProvider> 요소에 대한< XML 구문을 보여 줍니다.

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

출력 디바이스의 인터리빙 모드

인터리빙 은 XPS 문서의 개별 리소스 부분이 FixedPage 문서 파트와 함께 스트리밍되는 방법을 나타냅니다. 필터 파이프라인이 파이프라인에서 XPS 문서 인터페이스를 사용하여 첫 번째 필터에 대한 XPS 문서 개체 모델을 만들면 XPS 스풀 파일의 인터리빙 순서가 더 이상 수행되지 않습니다. 그러나 XPS 문서 인터페이스를 사용하는 파이프라인의 마지막 필터는 XPS 콘텐츠를 직렬화할 때 사용할 파이프라인의 필터 구성 파일에서 인터리빙 순서를 지정할 수 있습니다. 출력 디바이스 또는 출력 파일과 가장 호환되는 인터리빙 순서를 선택하면 후속 문서 처리의 성능이 향상될 수 있습니다.

다음 예제 필터는 인터리빙 옵션을 사용하는 방법을 보여 주도록 수정된 이전 예제 필터 구성 파일에서 발췌한 것입니다. 이 예제에서는 두 인터리빙 옵션을 모두 보여 주지만 실제 필터 구성 파일에는 필터 정의에 Interleaving> 요소가 하나<만 있습니다.

    <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>

필터 파이프라인은 다음과 같은 인터리빙 주문을 지원합니다.

  • ResourcesFirst 인터리빙 순서는 리소스에 종속된 FixedPage 앞에 각 종속 리소스를 스트림합니다. 이 인터리빙 순서는 프린터 드라이버 및 직접 사용 프린터에 적합합니다. 프린터가 렌더링을 시작하기 직전에 텍스트 및 페이지 콘텐츠를 렌더링하는 데 필요한 글꼴 및 이미지 리소스를 제공하기 때문입니다.

  • MarkupFirst 인터리빙 순서는 문서 텍스트 및 태그와 리소스가 실제 리소스를 스트리밍하기 전에 사용되는 방법에 대한 정보를 스트리밍합니다. 이 인터리빙 순서는 파일 보관 대상 및 문서를 온라인으로 보는 애플리케이션에 가장 적합합니다.

XPS 출력 Archive-Optimized

이 기능을 사용하면 인쇄 드라이버가 보관 최적화 XPS 출력을 스풀 파일로 명시적으로 요청할 수 있습니다. Windows 8 MXDW(Microsoft XPS 문서 작성기 v4)는 MXDC(Microsoft XPS 문서 변환기)에서 MXDW에서만 사용할 수 있는 코드 경로를 통해 이 보관 준비 XPS 출력을 생성합니다. 따라서 인쇄 드라이버는 MXDC에서 이 보관 최적화 XPS를 생성할 수 있습니다.

다음 코드 예제에서는 필터 파이프라인 구성 파일에서 Archive> 요소를 사용하여 <이 기능을 사용하도록 설정하는 XML 구문을 보여 줍니다.

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