다음을 통해 공유


명령 실행 순서

중요

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

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

프린터 명령은 의미 있는 순서로 프린터 하드웨어로 보내야 합니다. GPD 언어로 정의된 대부분의 명령 이름에 대해 Unidrv는 명령의 이스케이프 시퀀스를 프린터로 보낼 시기를 알고 있습니다. 두 가지 예외 사항이 있습니다.

옵션 선택 명령

프린터 구성 명령

이러한 두 명령 유형에 대해 명령을 실행할 순서를 지정해야 합니다.

명령 실행 순서는 작업 섹션 이름과 시퀀스 순서 번호라는 두 가지 구성 요소로 구성됩니다. Unidrv 드라이버는 각 인쇄 작업을 6개의 섹션으로 나눕니다. 각 섹션에 대해 Unidrv는 지정된 시퀀스로 섹션에 할당된 명령을 프린터에 보냅니다. 다음 섹션이 정의되어 있습니다.

JOB_SETUP
JOB_SETUP 섹션에 할당된 명령은 작업당 한 번 전송됩니다. 새 작업이 시작될 때 전송되는 첫 번째 명령입니다. 이러한 명령은 Unidrv의 DrvStartDoc 함수 구현 내에서 전송됩니다.

DOC_SETUP
문서의 첫 페이지가 전송되기 전에 DOC_SETUP 섹션에 할당된 명령이 전송됩니다. 명령은 DrvStartDoc 함수의 Unidrv 구현 내에서 전송됩니다. (이러한 명령은 애플리케이션이 Win32 ResetDC 함수를 호출한 후에도 전송됩니다. 이 섹션의 명령은 소프트 글꼴 및 패턴과 같은 다운로드한 정보를 제거하면 안 됩니다.)

PAGE_SETUP
PAGE_SETUP 섹션에 할당된 명령은 그리기를 시작하기 전에 각 새 페이지의 시작 부분에 전송됩니다. 이러한 명령은 Unidrv의 DrvStartPage 함수 구현 내에서 전송됩니다.

PAGE_FINISH
PAGE_FINISH 섹션에 할당된 명령은 드로잉이 완료된 후 각 페이지의 끝에 전송됩니다. 이러한 명령은 Unidrv의 DrvSendPage 함수 구현 내에서 전송됩니다.

DOC_FINISH
문서의 마지막 페이지가 전송된 후 DOC_FINISH 섹션에 할당된 명령이 전송됩니다. 명령은 Unidrv의 DrvEndDoc 함수 구현 내에서 전송됩니다. (이 섹션의 명령은 소프트 글꼴 및 패턴과 같은 다운로드한 정보를 제거해서는 안 됩니다.)

JOB_FINISH
JOB_FINISH 섹션에 할당된 명령은 작업당 한 번 전송됩니다. 작업이 끝날 때 전송되는 마지막 명령입니다. 이러한 명령은 Unidrv의 DrvEndDoc 함수 구현 내에서 전송됩니다.

이러한 각 섹션 내에서 명령은 시퀀스 번호로 표시된 순서대로 실행됩니다.

명령의 섹션 및 시퀀스 번호를 지정하려면 명령 특성에 설명된 *Order특성을 사용합니다. 형식:

*주문: SectionName. SequenceNumber

여기서 SectionName 은 JOB_SETUP, DOC_SETUP, PAGE_SETUP, PAGE_FINISH, DOC_FINISH 또는 JOB_FINISH 중 하나이며 SequenceNumber 는 숫자 값입니다.

시퀀스 번호는 연속될 필요는 없지만 섹션 내에 지정된 각 숫자는 고유해야 합니다. 섹션 내의 명령은 시퀀스 번호가 가장 낮은 명령에서 가장 높은 순서로 실행됩니다. 예를 들어 다음 항목은 InputBin, PaperSizeResolution 기능에 대한 옵션이 DOC_SETUP 섹션에 할당되고 지정된 순서로 전송됨을 나타냅니다.

*Feature: InputBin
{
    *Option: Auto
    {
        *Name: "Auto Tray"
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.50
            *Cmd: "<1B>(1<010014>"
        }
    }
    ...
}
*Feature: PaperSize
{
    *DefaultOption: Letter
    *Option: Letter
    {
        *Name: "Letter size"
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.60
            *Cmd: "<1B>(g<0300>n<01>r"
        }
    }
    ...
}
*Feature: Resolution
{
    *DefaultOption: 360dpi
    *Option: 360dpi
    {
        *Name: "360 dpi x 360dpi"
        *Command: CmdSelect
        {
            *Order: DOC_SETUP.70
            *Cmd: "<1B>(d<020001>"
        }
    }
    ...
}