Como combinar vários relatórios em um arquivo PDF no Delphi / Lazarus / C ++ Builder Como combinar vários relatórios em um

2020-09-03

Frequentemente necessitamos combinar vários documentos em um (por exemplo, PDF). Podem ser vários capítulos de documentação, diretórios de catálogos etc. A rigor, isso às vezes precisa ser feito não apenas para PDF, é apenas que este formato de arquivo em si não implica em edição e “mesclagem” sem ferramentas especiais, então seria melhor para fazê-lo corretamente imediatamente.

Hoje vou contar como fazer isso no FastReport VCL e FMX. Em nosso caso, haverá vários relatórios na entrada e um arquivo na saída.

Então, suponho que já tenhamos um projeto usando FastReport e os modelos estejam preparados. Em nosso exemplo, esses são arquivos no armazenamento local, mas nada impede de retirá-los do banco de dados ou de outras fontes. Agora precisamos combinar dois (ou mais) relatórios em um grande arquivo.

Para isso, o FastReport possui ferramentas que nos permitem anexar um novo relatório além do existente. O método TfrxReport.PrepareReport tem um parâmetro ClearLastReport: Boolean opcional que é definido como True por padrão. Este parâmetro determina se as páginas do relatório criado anteriormente devem ser apagadas. O exemplo a seguir mostra como construir um pacote de dois relatórios:

Pascal:
1
2
3
4
5
frxReport1.LoadFromFile('1.fr3');
frxReport1.PrepareReport;
frxReport1.LoadFromFile('2.fr3');
frxReport1.PrepareReport(False);
frxReport1.ShowPreparedReport;

 

C++:
1
2
3
4
5
frxReport1->LoadFromFile("1.fr3");
frxReport1->PrepareReport(true);
frxReport1->LoadFromFile("2.fr3");
frxReport1->PrepareReport(false);
frxReport1->ShowPreparedReport();

Carregue o primeiro relatório e crie-o sem exibi-lo na tela. Em seguida, carregue o segundo relatório no mesmo objeto TfrxReport e crie-o com o parâmetro ClearLastReport = False. Isso adiciona o segundo relatório ao anterior.

Obviamente, podemos repetir as duas penúltimas linhas para adicionar mais alguns relatórios ao nosso relatório composto complexo. E essa parte só é possível a partir do código.

Quando tivermos construído tudo, podemos ver os relatórios combinados na janela de visualização e salvar facilmente esse arquivo em qualquer formato e local a partir dele.

Salvando relatórios combinados como PDF.

Depois que conseguimos combinar dois relatórios em um, simplesmente exportamos para PDF (ou, na verdade, para qualquer formato de arquivo - por exemplo, RTF / DOC / ODT ou tabular - mas não é tão difícil combiná-los após a exportação enquanto é relevante para PDF). Aqui você pode permitir que o usuário selecione o formato de arquivo para salvar e as configurações:

Exportar para PDF

Click no ícone Save para preview do relatório.
Select the required format – PDF.

Podemos ver a janela de configurações de exportação.

Configure é tudo que necessitamos.

Para obter maiores informações de como criar e configurar, consulte o artigo: 

Click OK quando terminado!

Ou alguma coisa como "FrxReport1.Export (frxPDFExport1);"

Descrevi os parâmetros de salvamento em vários formatos do código Delphi, Lazarus e C ++ Builder mais detalhadamente em artigos anteriores.

Podemos abrir o documento resultante após a criação. Tendo aberto o arquivo, veremos uma exibição consistente de nossos relatórios em um documento PDF.

Combinar dois relatórios PDF do Delphi, Lazarus e C ++ Builder não é tão difícil quanto pode parecer.

VCL Export Lazarus FastReport PDF Delphi VCL Export Lazarus FastReport PDF Delphi
26 de abril de 2023

How to use RFID tags in FastReport .NET

The new page object is an RFID tag in FastReport.NET allows users to use the library to create labels or maps without third-party programs
20 de abril de 2023

How to update FastReport Online Designer to the latest version

Step-by-step instructions for updating FastReport Online Designer to the latest version via the client panel.
14 de março de 2023

The Future of Report Generation with Blazor WebAssembly

Step-by-step instructions for creating a demo application on .NET 6 and 7 directly in the browser using Blazor WebAssembly in FastReport .NET.
Fast Reports
  • 800-985-8986 (English, US)
  • +31 97 01025-8466 (English, EU)
  • +49 30 56837-3928 (German, DE)
  • +55 19 98147-8148 (Portuguese, BR)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2025 Fast Reports Inc.