Imprimir .pdf diretamente para a impressora

Delphi

30/04/2015

Como eu faço para imprimir um arquivo .pdf diretamente para a impressora sem abrir uma instancia do adobe?

Agradeço a ajuda de todos,
Silvio Morelo

Silvio Morelo

Curtidas 0

Respostas

Marisiana Battistella

Marisiana Battistella

30/04/2015

Não sei entendi exatamente o que você pediu, Morelo...

Mas você pode enviar o documento para impressão e alterar a impressora por "Salvar em PDF" ou outra opção que possa existir no teu PC.
Caso não exista essa opção você tem que instalar um programa que faça isso, como, por exemplo, o PDF Creator, o Cute PDF,...
GOSTEI 0
Thiago Santana

Thiago Santana

30/04/2015

Não sei entendi exatamente o que você pediu, Morelo...

Mas você pode enviar o documento para impressão e alterar a impressora por "Salvar em PDF" ou outra opção que possa existir no teu PC.
Caso não exista essa opção você tem que instalar um programa que faça isso, como, por exemplo, o PDF Creator, o Cute PDF,...


Isso mesmo, basta configurar a impressora!
Ai pode utilizar essas diversas opções existentes.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

30/04/2015

Morelo, quando puder, nos informe se conseguiu resolver...
GOSTEI 0
Silvio Morelo

Silvio Morelo

30/04/2015

Obrigado pela ajuda,

Eu tenho um .pdf já criado "contrato de serviço" e quando meu cliente contrata um serviço preciso imprimi-lo para ser assinado. Quero fazer isso pelo próprio sistema, efetuou a compra imprimir o contrato porem ao abrir o pdf ele também abre uma instancia do adobe.

Tem como enviar este .pdf diretamente para a impressora sem abrir esta instancia, ou alguém tem uma outra dica de como fazer essa impressão?
Utilizo Delphi 7 e Firebird 2.0
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

30/04/2015

No caso, eu acho que você tem um relatório onde está configurada a apresentação dos dados e esse relatório está sendo gerado em .pdf?

Se for isso, você teria que alterar o código para que ao invés de gerar o relatório em .pdf apenas envie o relatório para a impressora.
Assim, iria abrir a tela de edição da impressão, onde o usuário pode escolher em que impressora ele vai imprimir ou, então, pode optar por salvar em .pdf sem realizar a impressão.
GOSTEI 0
Silvio Morelo

Silvio Morelo

30/04/2015

Marisiana obrigado pela ajuda,

O relatório (.pdf) é criado por um outra área a onde eles alteraram sempre que necessário, eu apenas pego o arquivo e mando imprimir.
GOSTEI 0
Ageu Luna

Ageu Luna

30/04/2015

Bom dia Morelo
Você pode fazer da seguinte forma:
1- Declare "ShellApi" no uses da interface.
2- no evento OnClick de algum botão chame a função "ShellExecute(Handle, 'print', PChar('C:\Temp\ArquivoPDF.PDF'), nil, nil, SW_HIDE);"

Obs: não esqueça de substituir o arquivo que usei como exemplo 'C:\Temp\ArquivoPDF.PDF' pelo arquivo que deseja.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

30/04/2015

Obrigada por interagir Ageu!

Morelo, desculpa por não te responder antes, eu nem iria saber te ajudar mais pois sei muito pouco de Delphi.
Avise-nos se a solução apresentada pelo Ageu resolve o teu problema.
GOSTEI 0
Silvio Morelo

Silvio Morelo

30/04/2015

Ageu,

Obrigado pela ajuda! Eu executei o comando conforme você informou, o arquivo .pdf é impresso corretamente porem o Adobe Reader insiste em abrir, tem como imprimir o arquivo sem precisar abrir o Adobe?
GOSTEI 0
Ageu Luna

Ageu Luna

30/04/2015

Morelo, bom dia.

Realmente nos testes que realizei o adobe ainda é aberto como mencionado por você.
O que pode ser feito nesse caso é fechar o adobe pela sua aplicação. Veja o código no qual realizei alguns testes e funcionou.

ShellExecute(Handle, 'print', PChar(Edit1.Text), nil, nil, SW_HIDE);
Sleep(1000);
PostMessage(FindWindow(nil, 'Adobe Reader'), WM_CLOSE, 0, 0);

O "Edit1.Text" foi usado para o endereço do arquivo pdf.
O comando Sleep(3000), utilizei para aguardar 3 segundo até que adobe seja aberto, para posteriormente ser fechado pelo comando seguinte:
PostMessage(FindWindow(nil, 'Adobe Reader'), WM_CLOSE, 0, 0);

Obs:
Talvez seja necessário ajustar o tempo do comando "Sleep" (em milissegundos) para funcionar adequadamente.
GOSTEI 0
Dorivan Sousa

Dorivan Sousa

30/04/2015

Aqui encontra como executar um comando e esperar ele ser concluido... com isso voce pode executar a impressao e ao final fechar o adobe...

https://www.devmedia.com.br/forum/executar-um-comando-e-esperar-ele-ser-finalizado/135925
GOSTEI 0
Silvio Morelo

Silvio Morelo

30/04/2015

Agradeço a todos pela ajuda funcionou corretamente.
Obrigado.
GOSTEI 0
Silvio Morelo

Silvio Morelo

30/04/2015

Agradeço a todos pela ajuda funcionou corretamente.
Obrigado.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

30/04/2015

Que bom que deu certo!
Retorne sempre que puder! =)
GOSTEI 0
POSTAR