FastReport VCL прежде всего – это генератор документов. Основываясь на этом, можно сделать предположение, что отображение или встраивание в отчет документов других форматов – излишне. Но запросы наших пользователей говорят об обратном. Многим приходится сталкиваться с задачей интеграции старых систем с новыми, и такая система может содержать уже готовые документы, которые необходимо подключить к новым отчетам. Проще говоря, встроить и отображать документ другого формата внутри отчета, добавляя к нему новые страницы или поля.
Для таких задач, в FastReport VCL 2021.3 мы добавили новый объект отчета TfrxPDFView. Данный объект использует библиотеку с открытым исходным кодом Pdfium и предназначен для отображения PDF документов внутри отчета. Вы можете собрать библиотеку самостоятельно или использовать готовые сборки из нашего инсталляционного пакета (frx_pdfium.dll и frx_pdfium_64.dll в папке Bin). При самостоятельной сборке необходимо переименовать библиотеку в frx_pdfium.dll для 32-х разрядной системы и в frx_pdfium_64.dll для 64-х разрядной системы. Для компиляции библиотеки вручную понадобится: Visual Studio и Google depot_tools. Более подробно можно посмотреть здесь и здесь.
Как было написано выше, собирать самостоятельно Pdfium не требуется, достаточно использовать уже готовые библиотеки из FastReport VCL, но, если ограничения безопасности в вашей компании требуют сборку всех исходных кодов на вашей стороне, вы можете использовать приведённые выше ссылки.
TfrxPDFView может отображать документ как на одной, так и на нескольких страницах, используя возможности движка для разрыва данных. Рассмотрим подробней, как использовать данный объект и какие возможности он имеет.
После установки последней версии FastReport VCL 2021.3 данный компонент должен появиться на палитре компонентов Delphi в разделе FastReport VCL.
Просто добавьте компонент TfrxPDFObject на форму приложения, чтобы использовать TfrxPDFView в Run-time. Если вы создали новый проект, добавьте компонент TfrxReport и двойным щелчком вызовите дизайнер отчетов.
Кликните на PDF Object в панели инструментов дизайнера и создайте объект на бэнде в отчете, как и любой другой объект отчета.
Объект создан. После этого должен появиться редактор, в который можно загрузить PDF документ.
TfrxPDFView позволяет выводить и многостраничные документы. Для этого у объекта есть специальные настройки.
Свойство DetailStretchMode отвечает за отображение содержимого внутри контейнера объекта и может принимать следующие значения:
FastReport VCL позволяет выводить PDF документ в виде: одна страница PDF документа – одна страница в отчете, для каждой страницы в PDF документе.
Мы уже создали и загрузили PDF документ на бэнд заголовок отчета. Растянем его на всю страницу шаблона отчета, чтобы она выглядела примерно следующим образом:
Если сейчас нажать на просмотр отчета, то мы увидим только одну страницу, хотя, загружен многостраничный документ. Для вывода всех страниц в отчете нам нужно выполнить ряд действий.
Теперь можно запустить построение отчёта и взглянуть на результат.
FastReport VCL вывел все страницы PDF документа на страницах отчета.
Объект TfrxPDFView имеет и другие свойства. Свойство “Password“ устанавливает пароль, который используется PDF документом. А флаги свойства “DrawOptions” позволяют управлять отображением документа.
Дополнительно можно использовать имя файла в качестве источника для объекта TfrxPDFView используя свойство FileLink. И это ещё не всё! С помощью свойства DataLink документы можно загружать даже через http и https протоколы.
Теперь FastReport VCL умеет не только генерировать PDF документы, но и отображать их внутри отчета!