TfrxHotPDFExport

Adapter FastReport 4 / FastReport VCL

 

Adapter QuickReport  Urządzenie ReportBuilder  Adapter DevExpress

Filtr eksportu PDF FastReport 4 / FastReport VCL, który używa HotPDF jako bazowego backendu PDF zamiast wbudowanego writer PDF FastReport. Przeznaczony dla projektów, które już osadzają HotPDF i chcą jednego backendu PDF w całej aplikacji

 

Deklaracja Delphi:

type

  TfrxHotPDFExport = class(TfrxCustomExportFilter)

  published

    property Compressed: Boolean default True;

    property Title, Author, Subject, Keywords: string;

    property PageRange: string;

    property PDFVersion: TPDFVersType default pdf17;

    property PDFACompliance: string;

    property PDFXCompliance: string;

    property CompressionLevel: TPDFCompressionLevel default clDefault;

    property RenderDPI: Integer default 200;

    property ExportMode: TfrxHotPDFExportMode default hemPageMetafile;

    property AutoCreateURL: Boolean default False;

    property FontEmbedding: Boolean default True;

    property NotEmbeddedFonts: TStrings;

    property ActivateProtection: Boolean default False;

    property UserPassword, OwnerPassword: string;

    property CryptKeyLength: THPDFKeyType default k40;

    property ProtectOptions: THPDFProtectOptions default [];

    property EncryptMetadata: Boolean default True;

    property DialogDefaultFileName, DialogFilter, DialogTitle: string;

  end;

 

Opis

TfrxHotPDFExport wywodzi się z TfrxCustomExportFilter, więc wchodzi do zwykłego workflow MyReport.Export(MyExportInstance) bez żadnych zmian w rdzeniu FastReport. Jednostka woła RegisterComponents('FastReport 4.0 Export Filters', [TfrxHotPDFExport]), więc filtr pojawi się na palecie komponentów IDE, jak tylko dodasz jednostkę do pakietu

 

Gdy ShowDialog jest True i nie ustawiono wyjściowego strumienia, eksport pyta o plik oknem zapisu. DialogDefaultFileName wypełnia nazwę pliku (puste: FileName, potem Title, potem nazwa raportu), DialogFilter ustawia listę typów plików (puste: pliki PDF i wszystkie pliki), a DialogTitle podpis okna (puste: Export to PDF). Przy cichym eksporcie nie mają znaczenia

 

Adapter może eksportować jednym z trzech trybów:

 

1. Start tworzy świeżą instancję THotPDF i ustawia metadane dokumentu (Title / Author / Subject / Keywords / PDFVersion / Compression)

2. PageRange opcjonalnie filtruje strony FastReport, zanim obiekty stron HotPDF zostaną wymiarowane albo wypełnione

3. StartPage wymiarowuje nową stronę HotPDF w punktach tak, by pasowała do milimetrowych wymiarów strony raportu FastReport

4. hemPageMetafile zachowuje oryginalną ścieżkę przechwytywania podglądu całej strony i importuje ją przez ShowEnhancedMetafile

5. hemObjectCanvas prosi FastReport o narysowanie każdego przygotowanego widoku do pośredniego metafile strony, zanim HotPDF zaimportuje tę stronę

6. hemNativeObjects mapuje obsługiwane przygotowane widoki bezpośrednio na wywołania stron HotPDF dla zaznaczalnego tekstu memo z tłem, wyrównaniem, clipowaniem, odstępami znaków i stylami ramki, image XObject obrazów rastrowych, prostą geometrią kształtów, kreskami linii i adnotacjami URL widoków

7. Finish woła EndDoc i w razie potrzeby kopiuje tymczasowy PDF do dostarczonego Stream

 

Właściwości

Compressed - kompresja strumieni HotPDF włączona (domyślnie True). Ustaw False dla PDF-ów diagnostycznych (~5x większe pliki).

Title / Author / Subject / Keywords - metadane dokumentu. Gdy Title jest puste, adapter schodzi do Report.Name, więc PDF zawsze ma niepusty tytuł

PageRange - opcjonalny filtr stron od jedynki o składni takiej jak operacje stron HotPDF, np. 1, 1,3-5, albo pusty string dla wszystkich stron

PDFVersion - poziom specyfikacji PDF, jaki dokument ma realizować. Domyślnie pdf17

PDFACompliance i PDFXCompliance - przepuszczają bramki zgodności ze standardami HotPDF do generowanego PDF-a raportu. Wywołujący nadal przygotowuje wymagany profil ICC, OutputIntent, tagowanie albo zasoby poligraficzne normalnym workflow HotPDF, zanim oprze się na końcowej deklaracji zgodności

CompressionLevel - poziom FlateDecode. Domyślnie clDefault

RenderDPI - gęstość pikseli używana przy rastrowaniu strony FastReport przez TMetafileCanvas. Wyższa = ostrzejszy tekst i linie, ale większy metafile i PDF. 96 to natywne ekranowe DPI FastReport; 200 (domyślne) daje jakość druku bez gigantycznych plików

ExportMode - wybiera eksport całej strony jako metafile, eksport per obiekt na canvas albo eksport natywnych obiektów dla aktualnie mapowanych klas widoków FastReport

AutoCreateURL - przekazuje do THotPDF.AutoCreateURL, żeby natywny tekst memo mógł tworzyć adnotacje URI dla wykrytych URL-i

FontEmbedding i NotEmbeddedFonts - przekazują zwykłą politykę osadzania fontów HotPDF do generowanego PDF-a raportu

ActivateProtection, UserPassword, OwnerPassword, CryptKeyLength, ProtectOptions i EncryptMetadata - przekazują ustawienia zabezpieczenia hasłem HotPDF, gdy wymagane jest szyfrowane wyjście raportu

 

Typowy workflow

 

Exp := TfrxHotPDFExport.Create(nil);

try

  Exp.FileName := 'Report.pdf';

  Exp.Title := 'Monthly Statement';

  Exp.PDFVersion := pdf17;

  Exp.PDFACompliance := '3B';

  Exp.PageRange := '1,3-5';

  Exp.RenderDPI := 200;

  Exp.ExportMode := hemNativeObjects;

  Exp.AutoCreateURL := True;

  Exp.FontEmbedding := True;

  Exp.NotEmbeddedFonts.Add('Courier New');

  Exp.ActivateProtection := True;

  Exp.CryptKeyLength := aes256;

  Exp.OwnerPassword := 'owner';

  Exp.UserPassword := 'viewer';

  Exp.ProtectOptions := [prPrint, prInformationCopy];

  frxReport1.Export(Exp);

finally

  Exp.Free;

end;

 

Zachowywane możliwości

Tryby całej strony i object-canvas zachowują wektorową i rastrową treść stron renderowaną przez standardowy silnik składu FastReport. Tryb native-object aktualnie zachowuje obsługiwany tekst memo jako tekst PDF z tłem, wyrównaniem poziomym i pionowym oraz stylami ramki; widoki obrazów jako image XObject; proste kształty jako geometrię PDF; widoki linii jako kreski; a URL-e widoków jako adnotacje linków URI

 

Ograniczenia

Funkcje PDF specyficzne dla FastReport, które wymagają dodatkowego mapowania strukturalnego (pola AcroForm, nazwane destynacje i konspekt dokumentu), nie są przenoszone przez ten adapter. Właściwości bramek PDF/A i PDF/X są przekazywane do HotPDF, ale zasoby specyficzne dla standardów, takie jak profile OutputIntent, pozostają odpowiedzialnością wywołującego

 

Uwaga o pakowaniu

Adapter jest dystrybuowany jako add-on opt-in, a nie zależność głównych pakietów HotPDF*.dpk, więc projekty bez FastReport nie ciągną jednostek FastReport

 

Zobacz też: TQRHotPDFExportFilter, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support