다음을 통해 공유


필터 파이프라인 구성 파일

Important

최신 인쇄 플랫폼은 Windows에서 프린터와 통신하는 데 선호되는 수단입니다. 프린터 장치 개발을 위해 Windows 10 및 11의 인쇄 환경을 사용자 지정하려면 MICROSOFT의 IPP 받은 편지함 클래스 드라이버와 PSA(인쇄 지원 앱)를 사용하는 것이 좋습니다.

자세한 내용은 최신 인쇄 플랫폼 및 인쇄 지원 앱 디자인 가이드를 참조하세요.

필터 파이프라인 구성 파일은 다음을 정의하는 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 항목에 프라이빗 키워드넣을 수 있습니다. 그런 다음 이러한 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 콘텐츠를 serialize할 때 사용할 파이프라인의 필터 구성 파일에서 인터리빙 순서를 지정할 수 있습니다. 출력 디바이스 또는 출력 파일과 가장 호환되는 인터리빙 순서를 선택하면 후속 문서 처리의 성능이 향상될 수 있습니다.

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

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

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

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

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