Veja neste artigo como gerar um documento PDF no Delphi 7 a partir de um relatório Quick Report, utilizando o componente ExportQR, e em seguida enviá-lo automaticamente por e-mail.
Neste posto abordarei a 1ª parte do tutorial, explicando como se gera o PDF. Na parte 2 ((PARTE 2) Gerar PDF e enviá-lo por E-mail no Delphi 7: Enviar automaticamente por E-mail um PDF gerado pelo Delphi 7) explico como enviar automaticamente um PDF gerado pelo Delphi.
Neste posto abordarei a 1ª parte do tutorial, explicando como se gera o PDF. Na parte 2 ((PARTE 2) Gerar PDF e enviá-lo por E-mail no Delphi 7: Enviar automaticamente por E-mail um PDF gerado pelo Delphi 7) explico como enviar automaticamente um PDF gerado pelo Delphi.
Venho por meio deste artigo solucionar um grande problema que enfrentei quando tentei gerar arquivos do tipo PDF a partir do Delphi 7, mais especificamente do Quick Report.
Primeiramente você deve fazer o download do componente ExportQR em um dos seguintes links:
Após fazer o download, descompacte em algum diretório e abra o
arquivo ExPackD7.dpk (note que o componente também possui
versão para o Delphi 6).
arquivo ExPackD7.dpk (note que o componente também possui
versão para o Delphi 6).
Como este tutorial visa utilizar o ExportQR em conjunto com o Quick
Report, abra o arquivo ExportPack.pas e comente a linha onde está a
diretiva para o FastReport:
Report, abra o arquivo ExportPack.pas e comente a linha onde está a
diretiva para o FastReport:
unit ExportPack;
{$DEFINE QUICKREPORT}
{$DEFINE FASTREPORT} // comente essa linha
{$DEFINE SPANISH}
Após isso, clique no botão Install para instalar o componente e a paleta
ZASOFT será criada no seu Delphi, com o bendito componente
ExportQR. Não esqueça de adicionar o diretório no Library Path do
Delphi, caso não tenha sido feito automaticamente na instalação do
componente (Tools > Environment Options > Library > Library Path).
ZASOFT será criada no seu Delphi, com o bendito componente
ExportQR. Não esqueça de adicionar o diretório no Library Path do
Delphi, caso não tenha sido feito automaticamente na instalação do
componente (Tools > Environment Options > Library > Library Path).
Gerando PDF a partir do Quick Report
Agora que o componente está devidamente instalado, vamos a parte que
mais interessa. O tutorial vai se basear em um novo projeto criado
somente para demonstrar a geração do PDF.
mais interessa. O tutorial vai se basear em um novo projeto criado
somente para demonstrar a geração do PDF.
Crie um novo projeto no Delphi e adicione no Form1 o componente
ExportQR, um BitBtn e um Edit (esse Edit servirá para informar o
diretório que você irá exportar o arquivo PDF).
ExportQR, um BitBtn e um Edit (esse Edit servirá para informar o
diretório que você irá exportar o arquivo PDF).
Após isso, adicione ao projeto um relatório que será nossa impressão
(File > New > Other > Business > QuickReport Wizard). Deixe ambos
os formulários sendo criados em tempo de execução no projeto (ou
seja, eles tem que ficar em Auto-create forms na opção Project >
Options > Forms. Não esqueça de deixar o Form1 acima na
preferência do Auto-create forms.
Neste caso vou deixar o relatório (Form2) em branco, pois o objetivo
é apenas demonstrar como transformá-lo em PDF e não propriamente
explorar as propriedades do Quick Report.
é apenas demonstrar como transformá-lo em PDF e não propriamente
explorar as propriedades do Quick Report.
Volte ao formulário principal (Form1) e adicione a Unit do relatório,
através do menu File > Use Unit...
através do menu File > Use Unit...
Neste exemplo, pode- se colocar o seguinte texto na propriedade Text do
Edit1 para informar onde será salvo o arquivo PDF:
Edit1 para informar onde será salvo o arquivo PDF:
Edit1.Text := 'C:\testePDF\testePDF'
Dê dois cliques no BitBtn criado anteriormente e na ação do botão digite
o seguinte:
o seguinte:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if (Edit1.Text = '') then
begin
MessageDlg('Especifique um local para a '+
'exportação !', mtError, [mbOK], 0);
Edit1.SetFocus;
Exit;
end
else
begin
Form2.QuickRep1.Prepare;
ExportQR1.Report := Form2.QuickRep1;
ExportQR1.ExportQRPDF(Edit1.Text, False);
end;
end;
Edit e usar a criatividade para solucionar o problema de sua empresa.
Após concluir esses passos, passe para a Parte 2 deste tutorial, que visa
enviar o PDF gerado automaticamente por E-mail:
(PARTE 2) Gerar PDF e enviá-lo por E-mail no Delphi 7: Enviar automaticamente por E-mail um PDF gerado pelo Delphi 7.
Conclusões
Notamos neste artigo a facilidade de geração de arquivos PDF pelo
Delphi 7 e o quanto isso nos pode ser útil no dia-a-dia. No
próximo artigo mostrarei como encaixar automaticamente esse
arquivo PDF gerado em uma rotina de envio de e-mail. Forte
abraço e até o próximo tutorial.
Delphi 7 e o quanto isso nos pode ser útil no dia-a-dia. No
próximo artigo mostrarei como encaixar automaticamente esse
arquivo PDF gerado em uma rotina de envio de e-mail. Forte
abraço e até o próximo tutorial.
--
Obrigado! Ajudou muito!!!
ResponderExcluirEstamos a sua disposição Abraão!
ExcluirAbraço.
Como posso utilizar esse método como um relatório já pronto?
ResponderExcluirTipo, tenho um relatório de cliente(RelClienteDetalhado), como posso salvalo em PDF?
Antonio, como eu citei no exemplo, caso tu já tenhas um relatório criado, basta no evento click do Botão passar o comando:
Excluirprocedure TForm1.BitBtn1Click(Sender: TObject);
begin
if (Edit1.Text = '') then
begin
MessageDlg('Especifique um local para a '+
'exportação !', mtError, [mbOK], 0);
Edit1.SetFocus;
Exit;
end
else
begin
RelClienteDetalhado.QuickRep1.Prepare;
ExportQR1.Report := RelClienteDetalhado.QuickRep1;
ExportQR1.ExportQRPDF(Edit1.Text, False);
end;
end;
Olá, gostei muito do seu tutorial, porém uma coisa me incomoda sobre o PDF gerado. Hoje utilizo o PDF_Creator, com a função de salvamento automatico. O componente que voce demonstrou é infinitamente mais rapido, facil e pratico, mas a qualidade do PDF gerado deixa a desejar. Saberia como aumentar a qualidade do arquivo gerado ?
ResponderExcluirAmigo pra te falar a verdade comigo atendeu bem essa questão da qualidade do pdf gerado, nossos clientes ficaram satisfeitos com a solução.
ExcluirCara, muito obrigado pela dica. Deixa só eu fazer uma observação que talvez possa ajudar algumas pessoas, caso tenham o mesmo problema que o meu. No meu caso, fui instalar para o Delphi 6, que poussi a versão 3.0.9 do QuickReport. Ela não funcionou. Eu usei então a dpk do D7, desabilitei as linhas pedidas aqui no artigo, desabilitei uma última que pedia e funcionou perfeitamente. A qualidade do PDF não é grande, mas é satisfatória. Obrigado novamente!
ResponderExcluirObrigado pela disca Nysp, realmente não tinha testado o componente no Delphi 6. Abraço.
ExcluirÉ, eu tentei utilizar o componente, a dica e o funcionamento dele são realmente legais, mas a qualidade deixa muito a desejar. Achei que poderia aumentar a fonte das letras de alguns relatórios mas nem isso ajuda, infelizmente. Ele possui uma propriedade chamada PixelFormat, que não faz diferença alguma se deixa com 1bit ou 32 bits, acho que ela não fora desenvolvida pois, possivelmente, seria a que melhoraria a qualidade dos PDFs criados.
ResponderExcluirPois é Nysp, aqui não tive problemas quanto à qualidade do pdf gerado, visto que atendeu bem nossos clientes até o momento. Obrigado pela observação.
Excluirnessa parte do código
ExcluirExportQR1.Report := Form2.QuickRep1;
ExportQR1.ExportQRPDF(Edit1.Text, False);
experiementa nesse último ativar a compactação, mudar para True
Boa dica Marcelo, realmente muita gente reclamou da qualidade do PDF gerado. Amanhã na empresa vou testar a mudança mudando o parâmetro para True.
ExcluirCara muito interessante sua dica, tempos atrás necessitei fazer a geração em PDF a partir do QuickReport, atualmente uso a versão 4.0. Mas, infelizmente ele não exporta com as linhas de grade ou imagens, somente os textos. teste seu exemplo e acontece o mesmo. Alguma dica?
ResponderExcluirAmigo, implementei essa solução de gerar PDF de documentos em um aplicativo de Ordem de serviço aqui na empresa e funciona completo sim, inclusive com impressão das grades e imagens.
ExcluirUtilizo o próprio Quick Report que vem na instalação do Delphi 7 (C:\Program Files (x86)\Borland\Delphi7\Bin\dclqrt70.bpl).
Qualquer dúvida estamos ai para tentar ajudar.
Abraço.
Bom dia estou correndo atrás disso a muito tempo.....Como faço para inserir um documento pdf em um banco de dados paradox?
ResponderExcluirFabio, nunca utilizei o Paradox, porém no Firebird o campo que salva arquivos binários é o "BLOB".
ExcluirAcredito que no Paradox o tipo de dados que salvaria PDF seja o "Binary".
Outra possibilidade seria tu salvares os arquivos PDF no servidor e no banco de dados apenas gravar os caminhos para acessar os arquivos.
Excelente a dica cara, estava penando aqui. Só uma ressalva, segui o tutorial e a qualidade também ficou péssima.
ResponderExcluirNo meu caso resolveu ativando a compactação
ExportQR1.Report := Form2.QuickRep1;
ExportQR1.ExportQRPDF(Edit1.Text, True);
ao invés de:
ExportQR1.Report := Form2.QuickRep1;
ExportQR1.ExportQRPDF(Edit1.Text, False);
Que bom que o post te ajudou Marcelo, e novamente obrigado pela dica do parâmetro.
ExcluirEste comentário foi removido pelo autor.
ResponderExcluirOtimo seu post ajuda muito e bem detalhado, vc pode me dar uma dica de como posso imprimir uma nota de um cliente, eu preciso que quando eu selecionar o cliente e digitar os produtos comprados ao clica em "Concluir venda" o sistema me imprima somente a nota dele entende?
ResponderExcluirdai pensei na seguinte solucao de quando clicar nesse botao ele gravar a nota no relatorio e na sequencia da a opcao de imprimi-la e para isso eu mandar imprimir sempre a ultima pagina que no caso vai ser a ultima nota gerada
eu uso delphi 2010 e quickreport e firebird se puder me ajudar ficarei muito grato Abraço...
Bom dia Fabio.
ExcluirAo concluir a venda do cliente, tu ainda terás na memória os dados da query principal da venda, então podes usar este mesmo TSQLQuery/ClientDataSet para gerar o relatório no QuickReport.
Outra solução seria tu finalizares a venda salvando no banco de dados, e na sequência gerar a impressão a partir de uma pesquisa na tabela de vendas pelo último registro inserido.
Amigos está disponível a Parte 2 do Tutorial:
ResponderExcluirhttp://delphicomtorrada.blogspot.com.br/2014/09/gerar-pdf-no-delphi-7-partir-do-quick.html
Utilizem este PDF gerado como anexo em um E-mail a ser enviado automaticamente.
Olá Renato
ResponderExcluirEstou tentando instalar o componente no delphi 6 mas quando compilo dá o erro:
[Fatal Error] ExPackD6.dpk(33): Required package 'qrpt60' not found
Tentei instalar a versão 7 tb não deu certo
Alguém pode me ajudar?
Olá Tatiane.
ExcluirInfelizmente só instalei no Delphi 7, então nem tenho como te ajudar sobre o Delphi 6. Desculpe.
ao rodar aparece a mensagem (tprogressbar property out of range). sera que atualizando a versão do QR resolve, o meu é delphi 7 e QR 3,09
ResponderExcluirO MEU TBM DEU ESSE ERRO, ALGUÉM TEM A SOLUÇÃO
ExcluirSe alguém puder me ajudar, meu zap 11 94747-3977 ou leandro@startsolucao.com.br
ExcluirMuito obrigado você me ajudou muito , já tinha tentado varias coisas mas não estava conseguindo funcionou com sucesso. Obrigado
ResponderExcluirQue bom que conseguiste Naruto, também bati muita cabeça na época tentando gerar tal PDF.
ExcluirMuito obrigado. Resolveu meu problema
ResponderExcluirOlá !
ResponderExcluirPreciso desse componente o quanto antes.
Meu micro foi formatado e tenho aplicação rodando em DELPHI5. Nos LINKs apresentados, não arrumei nada.
Desde já agradeço.