Processar um trabalho de impressão

Quando o spooler estiver pronto para enviar um trabalho de impressão para um processador de impressão, ele chamará a função OpenPrintProcessor do processador de impressão. Essa função executa atividades de inicialização e retorna um identificador.

Em seguida, o spooler pode chamar PrintDocumentOnPrintProcessor, que é a função de processador de impressão que converte o fluxo de dados do formato de entrada para o formato de saída e retorna o fluxo convertido para o spooler.

Se o formato de entrada for EMF do sistema operacional baseado em NT, a função PrintDocumentOnPrintProcessor poderá controlar a reprodução dos registros EMF usando as funções listadas em Usando funções GDI em processadores de impressão. Essas funções fornecem uma interface entre o processador de impressão e o driver da impressora. Essa interface permite que os processadores de impressão controlem o layout físico das páginas da impressora e, portanto, facilita a implementação de recursos como imprimir várias páginas de documentos por página física (impressão "N-up"), imprimir páginas em ordem inversa e imprimir várias cópias de cada página.

O fluxo de dados de saída de um processador de impressão deve ser retornado ao spooler. Normalmente, se a conversão de dados exigir interação com a DLL de elementos gráficos da impressora do driver de impressora (como é o caso dos dados de entrada EMF), a DLL de elementos gráficos retornará o fluxo para o spooler chamando EngWritePrinter. Por outro lado, se a conversão não chamar a DLL de elementos gráficos da impressora (como é o caso dos dados de entrada RAW), o processador de impressão chamará WritePrinter.

A função PrintDocumentOnPrintProcessor pode ser interrompida por chamadas assíncronas do spooler para a função ControlPrintProcessor do processador de impressão. Essa função implementa a capacidade de um aplicativo de pausar, retomar ou cancelar um trabalho de impressão.

Depois que PrintDocumentOnPrintProcessor terminar de converter o fluxo de dados e retornar, o spooler chamará a função ClosePrintProcessor do processador de impressão.