Imprime trabalhos de impressão do Windows em ordem de envio

2

Alguém sabe de alguma configuração ou software de terceiros que force os trabalhos de impressão a serem impressos na ordem em que são enviados?

    
por Christopher Edwards 19.11.2010 / 17:00

1 resposta

2

Eu tropecei nesse problema. No meu caso de uso, eu tinha um script que iterava todos os arquivos em um diretório e invocava o verbo "Imprimir" usando o ShellExecute. (Então, simulando o usuário passando por cada um, clicando com o botão direito e escolhendo "imprimir".)

Os resultados são bons quando você está trabalhando apenas com um pequeno número de documentos, mas com 10 ou 100, há sempre alguns que estão fora de ordem.

É difícil dizer se o problema está no programa que está lidando com o verbo "print" ou com a própria fila. (No meu caso, toda vez que estou invocando impressão, provavelmente estou invocando uma nova instância do programa usado para impressão. Isso significa que os caprichos do tempo / programação de execução podem significar que o programa "imprimir" do documento nº 2 realmente envia trabalho para a fila antes do documento # 1.)

Parece que pode haver algo acontecendo com a fila também.

Eu criei um programa que imprime documentos enquanto assisto a fila. A primeira versão funcionou da seguinte maneira:

  1. ShellExecuteEx para imprimir documento
  2. Aguarde o documento ser exibido no printqueue
  3. Imprimir próximo documento

Nesta versão, alguns documentos ainda seriam impressos fora de ordem. A segunda versão foi a que funcionou:

  1. ShellExecuteEx para imprimir documento
  2. Aguarde o documento ser exibido no printqueue
  3. Aguarde a conclusão do spool (PrintSystemJobInfo.IsSpooling == status falso no .NET)
  4. Imprimir próximo documento

Esta segunda versão imprime os documentos sempre em ordem. Isso me leva a acreditar que quando você está enviando um monte de documentos, há um período estranho em que é uma corrida para ver qual deles é colocado em spool primeiro.

Não estou familiarizado com os detalhes do sistema de impressão do Windows. Pode ser que um trabalho apareça antes que o programa que o gera seja enviado enviando todos os dados. Isso significaria que o tempo de execução variável do programa por trás do verbo "imprimir" poderia estar causando o problema.

    
por 23.02.2012 / 18:28