Quem já não passou por uma experiência onde o cliente solicita que os relatórios sejam exportados do seu sistema em formato PDF? Bom, pode até ser fácil você instalar um impressora PDF na máquina e orientar que ele imprima para o formato, mas, e porque não exportar diretamente o relatório no formato solicitado? Na grande maioria dos geradores de relatórios, esta utilidade está disponível, e no Rave Reports, exportar para PDF é prático e rápido de ser implementado. Vamos montar um pequena estrutura de relatório, e codificar a exportação.
Crie uma nova aplicação Delphi for Win32, e adicione os seguintes componentes:
RvProject (paleta Rave) - Integração com o projeto do relatório
RvSystem (paleta Rave) - Configurações do relatório
RvRenderPDF (paleta Rave) - Exportação do relatório para PDF
ClientDataSet (paleta Data Access) - Importação de XML com dados para o relatório
RvDataSetConnection (paleta Rave) - Ligação do DataSet para exibição dos campos na estrutura do Rave Reports
SaveDialog (paleta Dialogs) - Localizar destino de exportação do relatório
Button (paleta Standard) - altere Caption para "Exportar para PDF"


Para codificarmos então a exportação do relatório, adicione o bloco a seguir no evento OnClick do Button onde definimos as configurações do objeto SaveDialog e solicitamos ao usuário que informe um nome e local para que o relatório possa ser salvo. Em seguida, desabilitamos a opção de Preview exibida durante a execução de um relatório, definimos que o mesmo será renderizado para PDF, selecionamos o nome do relatório a ser executado e chamamos a ação.
begin
SaveDialog1.Filter := 'Arquivos PDF (*.pdf)|*.pdf';
SaveDialog1.DefaultExt := '*.pdf';
SaveDialog1.Execute;
if SaveDialog1.FileName <> '' then
begin
RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup];
RvSystem1.DefaultDest := rdFile;
RvSystem1.DoNativeOutput:= false;
RvSystem1.RenderObject:= rvRenderPDF1;
RvProject1.SelectReport('Report1',True);
RvSystem1.OutputFileName:= SaveDialog1.FileName;
rvproject1.Execute;
end;
end;
Ao final do processo, um arquivo PDF será salvo no destino escolhido, pronto para ser enviado por e-mail ou disponibilizado para download em sites Web.

6 comentários:
Boa tarde, estou usando delphi .net 2007 e estou com dificuldades de fazer relatórios, não tem nada de componentes, vocë conheçe alguma forma de fazer relatórios no delphi for. net???
atenciosamente
Sergio
serginho.inf@gmail.com
Bom, pra .NET há vários limites nos geradores de relatórios mais conhecidos. De uma pesquisada nos nomes Fast Reports e Crystal Reports, estes geram relatórios par ferramentas .NET.
Att
Kra no meu o arquivo nao é criado da uma exceção do tipo: "Cannot create File", estou usando seven será que tem alguma relação? Mas no resto seu exemplo funciona direitinho..
cezar tente utilizando modo administrador e/ou compatibilidade com XP (clicando com botão direito no exe)
Amigão, meu campo datamemo do rave report ta ligado a uma tabela feita no access atraves de ADO, mas ta ficando desconfigurado. O que sera isso? Acho que tem alguma coisa a ver com BlobField. Voce me ajudar? melhordebao@gmail.com
Companheiro, também tive esse problema com o Rave e o ADO. Encontrei duas maneiras de resolver:
1ª) Na cláusula SQL da Query, use alguma função que converta o memo para string, tipo cstr(NomeDoCampoMemo);
2ª) Crie uma função no evento OnBeforePrint do Databand que contém o campo memo com este código:
var i: integer;
begin
Memo1.text := '';
for i:= 0 to Length(DVNomeDoCampo.AsString) do
if Odd(i) then
Memo1.Text := Memo1.Text + Copy(DVNomeDoCampo.AsString, i,1);
end;
end;
Essa função vai retirar os caracteres inválidos do campo memo, antes de serem enviados para impressão.
Postar um comentário