인쇄 프로세서에서 GDI 함수 사용
NT 기반 운영 체제 EMF를 입력 형식으로 처리하는 인쇄 프로세서에서 사용하기 위해 Gdi32.dll사용자 모드 GDI 함수 집합을 내보냅니다. 다음 표에서는 제공된 함수를 나열합니다.
함수 이름 | 설명 |
---|---|
GdiDeleteSpoolFileHandle | 스풀 파일 핸들을 해제합니다. |
GdiEndDocEMF | 인쇄 작업 문서에 대한 EMF 재생 작업을 완료합니다. |
GdiEndPageEMF | 실제 페이지에 대한 EMF 재생 작업을 완료하고 프린터에서 페이지를 내보낸다. |
GdiGetDC | 프린터의 디바이스 컨텍스트 핸들을 반환합니다. |
GdiGetDevmodeForPage | 문서 페이지의 DEVMODEW 구조를 반환합니다. |
GdiGetPageCount | 문서 페이지 수를 반환합니다. |
GdiGetPageHandle | 문서 페이지에 대한 핸들을 반환합니다. |
GdiGetSpoolFileHandle | 다른 GDI 함수에 대한 입력으로 필요한 스풀 파일 핸들을 반환합니다. |
GdiPlayPageEMF | 문서 페이지와 연결된 EMF 레코드를 재생합니다. |
GdiResetDCEMF | 프린터의 디바이스 컨텍스트를 다시 설정합니다. |
GdiStartDocEMF | 인쇄 작업 문서에 대한 초기화 작업을 수행합니다. |
GdiStartPageEMF | 실제 페이지에 대한 초기화 작업을 수행합니다. |
EMF 인쇄 프로세서의 PrintDocumentOnPrintProcessor는 GdiGetSpoolFileHandle를 호출하여 스풀 파일 핸들을 얻어야 하며, GdiGetDC를 호출하여 프린터의 디바이스 컨텍스트 핸들을 얻어야 합니다. 그런 다음, 다음 단계를 수행할 수 있습니다.
각 인쇄 작업 문서에 대해 EMF 레코드를 재생하기 전에 GdiStartDocEMF 호출해야 하며 마지막 EMF 레코드가 재생된 후 GdiEndDocEMF호출해야.
각 실제 페이지를 인쇄하려면 페이지에 문서 페이지를 그리기 전에 GdiStartPageEMF 호출해야 하며, 실제 페이지에서 마지막 문서 페이지를 그린 후 GdiEndPageEMF 호출해야 합니다.
각 문서 페이지를 실제 페이지에 그려지려면 GdiGetDevmodeForPage 호출하여 마지막 문서 페이지를 그린 이후 DEVMODE 구조체 내용이 변경되었는지 확인해야 합니다. DEVMODE가 변경된 경우 GdiEndPageEMF 및 GdiStartPageEMF호출하여 새 물리적 페이지를 시작해야 하며, GdiResetDCEMF호출하여 프린터의 디바이스 컨텍스트를 업데이트해야 합니다. 문서 페이지는 먼저 GdiGetPageHandle을 호출하여 문서 페이지 핸들을 얻은 후, GdiPlayPageEMF을 호출하여 페이지를 그립니다.
작업이 완전히 그려진 후 인쇄 프로세서는 GdiDeleteSpoolFileHandle호출해야 합니다.
인쇄 프로세서에서 페이지 인쇄를 시작하기 전에 총 페이지 수가 필요한 경우(예: 페이지 인쇄 순서대로) GdiGetPageCount호출할 수 있지만 이 함수는 스풀링이 끝날 때까지 반환되지 않으므로 스풀링하는 동안 인쇄 기능을 사용하지 않도록 설정합니다.
인쇄 프로세서가 이러한 GDI 함수를 사용하는 경우 EnumPrintProcessorDatatypes 함수는 제네릭 Windows 2000 이상 EMF 형식을 나타내는 지원되는 데이터 형식으로 "NT EMF"를 반환해야 합니다. 인쇄 프로세서는 EMF 레코드를 수정해서는 안됩니다.