Compartilhar via


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.