Usando funções GDI em processadores de impressão
Um conjunto de funções GDI no modo de usuário é exportado por Gdi32.dll, para uso por processadores de impressão que lidam com o EMF do sistema operacional baseado em NT como um formato de entrada. A tabela a seguir lista as funções fornecidas.
Nome da função | Descrição |
---|---|
GdiDeleteSpoolFileHandle | Libera um identificador de arquivo de spool. |
GdiEndDocEMF | Conclui as operações de reprodução do EMF para um documento de trabalho de impressão. |
GdiEndPageEMF | Conclui as operações de reprodução do EMF para uma página física e ejeta a página da impressora. |
GdiGetDC | Retorna um identificador para o contexto do dispositivo da impressora. |
GdiGetDevmodeForPage | Retorna a estrutura DEVMODEW de uma página de documento. |
GdiGetPageCount | Retorna o número de páginas de documentos. |
GdiGetPageHandle | Retorna um identificador para uma página de documento. |
GdiGetSpoolFileHandle | Retorna um identificador de arquivo de spool, necessário como entrada para outras funções GDI. |
GdiPlayPageEMF | Reproduz os registros EMF associados a uma página de documento. |
GdiResetDCEMF | Redefine o contexto do dispositivo de uma impressora. |
GdiStartDocEMF | Executa operações de inicialização para o documento de trabalho de impressão. |
GdiStartPageEMF | Executa operações de inicialização para uma página física. |
PrintDocumentOnPrintProcessor de um processador de impressão EMF deve chamar GdiGetSpoolFileHandle para obter um identificador de arquivo de spool e GdiGetDC para obter o identificador de contexto do dispositivo da impressora. Em seguida, ele pode executar as seguintes etapas:
Para cada documento de trabalho de impressão, GdiStartDocEMF deve ser chamado antes que todos os registros EMF sejam reproduzidos e GdiEndDocEMF deve ser chamado depois que o último registro EMF tiver sido reproduzido.
Para que cada página física seja impressa, GdiStartPageEMF deve ser chamado antes que qualquer página de documento seja desenhada na página e GdiEndPageEMF deve ser chamado depois que a última página do documento tiver sido desenhada na página física.
Para que cada página de documento seja desenhada em uma página física, GdiGetDevmodeForPage deve ser chamado para determinar se o conteúdo da estrutura DEVMODE foi alterado desde que a última página do documento foi desenhada. Se o DEVMODE tiver sido alterado, uma nova página física deverá ser iniciada (chamando GdiEndPageEMF e GdiStartPageEMF), e o contexto do dispositivo da impressora deve ser atualizado chamando GdiResetDCEMF. Uma página de documento é desenhada em uma página física chamando primeiro GdiGetPageHandle para obter um identificador de página do documento e, em seguida, chamando GdiPlayPageEMF para desenhar a página.
Depois que o trabalho for completamente desenhado, o processador de impressão deverá chamar GdiDeleteSpoolFileHandle.
Se um processador de impressão exigir a contagem total de páginas antes de começar a imprimir páginas (como para imprimir páginas em ordem inversa), ele poderá chamar GdiGetPageCount, mas essa função não retornará até que o spooling termine e, portanto, desabilite a capacidade de imprimir durante o spooling.
Se um processador de impressão usar essas funções GDI, sua função EnumPrintProcessorDatatypes deverá retornar "NT EMF" como um tipo de dados com suporte, que representa o formato EMF genérico do Windows 2000 e posterior. O processador de impressão não deve modificar registros EMF.