FastReport VCL jest głównie generatorem dokumentów. Na tej podstawie można przyjąć, że wyświetlanie lub osadzanie w raporcie dokumentów w innych formatach jest zbędne. Jednak prośby naszych użytkowników sugerują co innego. Wielu z nich staje przed zadaniem integracji starszych systemów z nowymi, a taki system może zawierać gotowe dokumenty, które trzeba podpiąć pod nowe raporty. Mówiąc prościej, osadzanie i wyświetlanie dokumentu w innym formacie w ramach raportu, dodając do niego nowe strony lub pola.
Dla takich zadań w FastReport VCL 2021.3 dodaliśmy nowy obiekt raportu TfrxPDFView. Obiekt ten wykorzystuje open-source'ową bibliotekę Pdfium i jest przeznaczony do wyświetlania dokumentów PDF wewnątrz raportu. Bibliotekę można zbudować samodzielnie lub skorzystać z gotowych asemblerów z naszego pakietu instalacyjnego (frx_pdfium.dll i frx_pdfium_64.dll w folderze Bin). Podczas samodzielnego budowania biblioteki należy zmienić jej nazwę na frx_pdfium.dll dla systemu 32-bitowego oraz na frx_pdfium_64.dll dla systemu 64-bitowego. Do ręcznej kompilacji biblioteki potrzebne będą: Visual Studio i Google depot_tools. Więcej szczegółów można znaleźć na tej stronie i na tej stronie.
Jak napisano powyżej, nie ma potrzeby samodzielnego budowania Pdfium, wystarczy skorzystać z gotowych bibliotek z FastReport VCL, ale jeśli ograniczenia bezpieczeństwa w Twojej firmie wymagają budowania całego kodu źródłowego po Twojej stronie, możesz skorzystać z podanych wyżej linków.
TfrxPDFView może wyświetlać dokument na pojedynczej stronie lub na wielu stronach, wykorzystując możliwości silnika w zakresie podziału danych. Przyjrzyjmy się bliżej, jak używać tego obiektu i jakie ma funkcje.
Po zainstalowaniu najnowszej wersji FastReport VCL 2021.3, komponent ten powinien pojawić się w palecie komponentów Delphi pod FastReport VCL.
Wystarczy dodać komponent TfrxPDFObject do formularza aplikacji, aby korzystać z TfrxPDFView w trybie Run-time. Jeśli utworzyłeś nowy projekt, dodaj komponent TfrxReport i kliknij dwukrotnie na projektanta raportów.
Kliknij na Obiekt PDF w pasku narzędzi kreatora i utwórz obiekt na pasku w raporcie, tak jak każdy inny obiekt raportu.
Obiekt został utworzony. Następnie powinien pojawić się edytor, do którego można załadować dokument PDF.
TfrxPDFView umożliwia również drukowanie dokumentów wielostronicowych. Obiekt posiada specjalne ustawienia przeznaczone do tego zadania.
Wartość DetailStretchMode jest odpowiedzialna za wyświetlanie zawartości wewnątrz kontenera obiektu i może przyjmować następujące określenia:
- pdOneToOneStrongStretch - strona jest zawsze rozciągana według wymiarów obiektu. Proporcje nie są zachowane.
- pdOneToOneNormalize - strona jest zawsze rozciągnięta z zastosowaniem oryginalnych proporcji strony w dokumencie PDF.
- pdManyToOneNormalize - pozwala zmieścić wiele stron w obszarze obiektu, z zachowaniem proporcji stron w dokumencie PDF.
Wyświetlanie wielostronicowego dokumentu PDF
FastReport VCL pozwala na wyświetlanie dokumentu PDF jako: jedna strona dokumentu PDF - jedna strona w raporcie, dla każdej strony w dokumencie PDF.
Dokument PDF został już utworzony i załadowany do paska nagłówka raportu. Rozciągnijmy go na całą stronę szablonu raportu, tak aby wyglądał mniej więcej tak:
Jeśli teraz klikniemy, by wyświetlić raport, zobaczymy tylko jedną stronę, choć załadowany jest dokument wielostronicowy. Aby wyświetlić wszystkie strony w raporcie musimy wykonać kilka kroków.
- Krok 1: Włącz właściwości AllowSplit i Stretched na True dla pasma, w którym znajduje się obiekt TfrxPDFView. Aby umożliwić rozciągnięcie i rozciągnięcie taśmy.
- Krok 2: Ustaw właściwość StretchMode obiektu TfrxPDFView na smActualHeight lub smMaxHeight tak, aby obiekt mógł się rozciągać.
Możesz teraz uruchomić generowanie raportu i przyjrzeć się wynikom.
FastReport VCL wydrukował wszystkie strony dokumentu PDF na stronach raportu.
Obiekt TfrxPDFView posiada również inne właściwości. Właściwość "Hasło" ustawia hasło, które jest używane przez dokument PDF. Natomiast flagi właściwości "DrawOptions" pozwalają kontrolować sposób rysowania dokumentu.
Dodatkowo można wykorzystać nazwę pliku jako źródło dla obiektu TfrxPDFView przy pomocy właściwości FileLink. A to jeszcze nie wszystko! Możesz nawet przesyłać dokumenty przez protokoły http i https za pomocą właściwości DataLink.
FastReport VCL może teraz nie tylko generować dokumenty PDF, ale również wyświetlać je wewnątrz raportu!