Как объединить несколько отчетов в 1 PDF файл в Delphi

03.09.2020

Часто бывает нужно объединить несколько документов в один (например PDF). Это могут быть несколько глав документации, разделы каталогов и т.д. Строго говоря, это бывает нужно сделать не только для PDF, просто сам по себе формат не предполагает редактирования и “склеивания” без спецсредств, потому лучше бы его сразу “готовить правильно”.

Сегодня я расскажу, как это сделать в FastReport VCL и FMX. В нашем случае на входе будут несколько отчётов - а на выходе - один файл.

Итак, я полагаю, проект, использующий FastReport у нас уже есть, сами шаблоны подготовлены. В нашем примере это файлы, лежащие на диске, но ничего не мешает брать их из базы или каких-то ещё источников. Теперь осталось собрать из двух (или более) отчётов - один, но большой.

Для этого в FastReport есть средства, позволяющие “пристроить” новый отчет в дополнение к уже существующему. Метод TfrxReport.PrepareReport имеет один необязательный параметр ClearLastReport: Boolean, по умолчанию он равен True. Этот параметр определяет, надо ли очищать страницы ранее построенного отчета. Следующий пример показывает, как построить пакет из двух отчетов:

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();

Мы загружаем первый отчет и строим его, не показывая на экране. Затем загружаем второй отчет в этот же объект TfrxReport и строим его с параметром ClearLastReport = False. При этом отчет добавляется к ранее построенному.

Предпоследние две строчки, очевидно, мы можем повторять с целью добавить ещё какие-то отчёты в наш “композитный комплексный отчёт”. И эта часть возможна только из кода.

А, когда мы все построили - можем увидеть объединенные отчеты в предпросмотре и через него легко сохранить в любой формат и место.

Сохранение в PDF формат объединенного отчета.

После того, как нам удалось совместить два отчета в один, просто экспортируем его в PDF формат (да в принципе, в любой формат), например, RTF-DOC-ODT или табличные не настолько проблематично объединить уже после экспорта, а для PDF это актуально Тут можно дать волю пользователю выбрать формат сохранения и настройки:

Кликаем в предпросмотре на значок сохранения.
Выберем нужный формат - PDF.

У нас высветилось окно с параметрами экспорта.

Настраиваем все, что нам требуется.

Подробнее о создании и настройке можно узнать в статье: 

А, когда закончили нажимаем ОК!


Ну или как-то так  “frxReport1.Export(frxPDFExport1);”

Подробнее параметры сохранения в различные форматы из кода Delphi, Lazarus, С++ Builder я расписывал в предыдущих статьях.

После создания можем открыть созданный документ. Открыв, увидим последовательное отображение наших отчетов в одном PDF документе.

Объединение двух отчетов PDF из Delphi, Lazarus, С++ Builder не так сложно, как казалось бы.

1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.
28 октября 2024

Как настроить WSL 2 для работы с FastReport и FastCube

В этой статье попробуем вместе разобраться, как настроить WSL 2 для работы с компонентами FastReport и FastCube в Lazarus для Linux.