IMPRESSAO DE LOTES DE PDFS

JMANGAS 24/06/2010 09:06:33
#345654
Prezados,

Tenho em um diretório uma relação de PDFs, como possuo uma impressora a laser rápida, gostaria que o PROGRAMA pudesse pegar o lote de PDFs e mandar direto para impressora, sem ter que abrir um por um e enviar, pois, a impressão ficará muito lenta.

Att.

JMANGAS 28/06/2010 09:30:34
#345952
Alguem teria alguma idéia??
JMANGAS 29/06/2010 10:24:22
#346031
Alguma luz para o meu problema?
CASSIOJFF 29/06/2010 11:02:06
#346038
Vc tem alguma rotina ja pronta de impressao do pdf sem abri-lo?
JMANGAS 29/06/2010 18:56:52
#346098
é exatamente o que eu quero, conseguir envi-alos diretamente para a impressora....

MARCOSLING 29/06/2010 23:43:15
#346116
acho que vc pode imprimir um documento via linha de comando
IGORDANIEL 30/06/2010 07:46:31
#346119
Ola JMANGAS,

Bom, não sei se vai te auxiliar, porém vamos lá:

Tenho uma rotina pra imprimir arquivos pdf [Ô]sem abrir[Ô], foi a forma mais rapida que encontrei para imprimir um único arquivo, ou [Ô]um lote[Ô], de arquivos, estou utilizando o programa Ghostscript 8.63, com ele é possível enviar apenas um arquivo para impressão, ou então fazer uma junção de vários arquivos criando apenas um pdf, para imprimir.
Consegui identificar que se você enviar arquivo por arquivo a impressão fica lenta pq a impressora tem o tempo de inicio de impressão, agora se você enviar um arquivo com várias paginas a impressão é mais rápida, então segue o link para você baixar o arquivo e o código utilizado para imprimir um único arquivo ou o arquivo em lote.

Ghostscript 8.63 : http://files.brothersoft.com/pdf_files/miscellaneous/gs863w32.exe

vImpressoraNFE = Nome da impressora (Printers.DeviceName)
vPDF = Caminho do arquivo pdf

Essa primeira linha utiliza um Device diferente ljet4, identifiquei que algumas impressoas a laser de maior porte utilizam esse driver e as outras mais simples utilizam o driver mswinpr2

Exemplo 1 : Shell [Ô]C:\Arquivos de programas\gs\gs8.63\bin\gswin32.exe -sDEVICE=ljet4 -dSAFER -dNoCancel -dNOPAUSE -dBATCH -sPAPERSIZE=a4 -sOutputFile=\\spool\[Ô] & vImpressoraNFE & [Ô] [Ô] & vPDF & [Ô] quit.ps ,vbHide[Ô]

Exemplo 2 : Shell [Ô]C:\Arquivos de programas\gs\gs8.63\bin\gswin32.exe -sDEVICE=mswinpr2 -dSAFER -dNoCancel -dNOPAUSE -dBATCH -sPAPERSIZE=a4 -sOutputFile=\\spool\[Ô] & vImpressoraNFE & [Ô] [Ô] & vPDF & [Ô] quit.ps ,vbHide[Ô]

Agora veja um exemplo de [Ô]junção[Ô] dos arquivos .pdf:

vTXT = [Ô]C:\DANFE\[Ô] & TxComando.Text & Format(Now, [Ô]dd.mm.yyy.hh.mm.ss[Ô]) & [Ô].txt[Ô]
vPDF = [Ô]C:\DANFE\[Ô] & TxComando.Text & Format(Now, [Ô]dd.mm.yyy.hh.mm.ss[Ô]) & [Ô].pdf[Ô]

Open vTXT For Output As #1
Print #1, Tab(0); vCaminhoDanfe
Print #1, Tab(0); vCaminhoDanfe
Print #1, Tab(0); vCaminhoDanfe
Close #1

Shell [Ô]C:\Arquivos de programas\gs\gs8.63\bin\gswin32.exe -sDEVICE=pdfwrite -dSAFER -dPDFSETTINGS=/prepress -dBATCH -sPAPERSIZE=a4 -dNOPAUSE -sOutputFile=[Ô] & vPDF & [Ô] @[Ô] & vTXT & [Ô] -c -q[Ô], vbHide

Nesse ponto, se o arquivo .txt tiver muitos arquivos pdf, ou se forem grandes pode demorar alguns segundos, ou minutos, então é bom monitorar se realmente finalizou o processo
(gswin32.exe) antes de executar novamente o comando de impressão.

Depois você executa o comando de impressão:

Shell [Ô]C:\Arquivos de programas\gs\gs8.63\bin\gswin32.exe -sDEVICE=ljet4 -dSAFER -dNoCancel -dNOPAUSE -dBATCH -sPAPERSIZE=a4 -sOutputFile=\\spool\[Ô] & vImpressoraNFE & [Ô] [Ô] & vPDF & [Ô] quit.ps ,vbHide[Ô]

Bom, qualquer dúvida, estou a disposição.

Abraços,

Igor Daniel
JMANGAS 30/06/2010 22:34:41
#346200
Boa noite IGORDANIEL,

Obrigado pela atenção.... Vou baixar e montar o exemplo para ver como fica.... Desde já agradeço....
Tópico encerrado , respostas não são mais permitidas