TfrxHotPDFExport (FastReport 4 / FastReport VCL adapter)

FastReport 4 / FastReport VCL adapter ()

 

QuickReport adapter  ReportBuilder device  DevExpress adapter

Exportní filtr PDF pro FastReport 4 / FastReport VCL, který používá HotPDF jako podkladové PDF jádro místo vlastního vestavěného PDF writeru FastReport. Je určen pro projekty, které už HotPDF používají a chtějí jednotné PDF jádro napříč celou aplikací

 

Deklarace 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;

 

Popis

TfrxHotPDFExport dědí z TfrxCustomExportFilter, takže zapadne do běžného pracovního postupu MyReport.Export(MyExportInstance) bez jakýchkoli změn jádra FastReport. Jednotka volá RegisterComponents('FastReport 4.0 Export Filters', [TfrxHotPDFExport]), takže se filtr po přidání jednotky do balíčku objeví v komponentové paletě IDE

 

Když je ShowDialog True a není nastaven žádný výstupní stream, ptá se export na soubor dialogem pro uložení. DialogDefaultFileName předvyplní název souboru (prázdné: FileName, poté Title, poté název reportu), DialogFilter nastaví seznam typů souborů (prázdné: soubory PDF a všechny soubory) a DialogTitle titulek (prázdné: Export to PDF). Na tichých exportech nemají žádný vliv

 

Adaptér umí exportovat jedním ze tří režimů:

 

1. Start vytvoří čerstvou instanci THotPDF a nastaví metadata dokumentu (Title / Author / Subject / Keywords / PDFVersion / Compression)

2. PageRange volitelně vyfiltruje stránky FastReport dřív, než se objekty stránek HotPDF dimenzují nebo vyplní

3. StartPage dimenzuje novou stránku HotPDF v bodech tak, aby odpovídala milimetrovým rozměrům stránky reportu FastReport

4. hemPageMetafile zachovává původní cestu zachytávání celé stránky pro náhled a importuje ji přes ShowEnhancedMetafile

5. hemObjectCanvas požádá FastReport, aby nakreslil každý připravený view do mezistavu metafile stránky, dřív než ji HotPDF importuje

6. hemNativeObjects mapuje podporované připravené view přímo na volání stránky HotPDF: vybíratelný text memo s pozadím, zarovnáním, ořezem, prostrkáním znaků a stylem rámečku, rastrové obrázkové image XObjects, geometrii jednoduchých tvarů, tahu čar a URL anotace view

7. Finish zavolá EndDoc a v případě potřeby zkopíruje dočasné PDF do streamu dodaného volajícím

 

Vlastnosti

Compressed - zapnutá komprese streamů HotPDF (výchozí True). Pro diagnostická PDF vypněte (~5x větší soubory).

Title / Author / Subject / Keywords - metadata dokumentu. Když je Title prázdný, adaptér sáhne po Report.Name, aby PDF mělo vždy neprázdný titulek

PageRange - volitelný filtr stránek číslovaných od jedničky se stejnou syntaxí jako stránkové operace HotPDF, například 1, 1,3-5, nebo prázdný řetězec pro všechny stránky

PDFVersion - úroveň specifikace PDF, na kterou má dokument cílit. Výchozí je pdf17

PDFACompliance a PDFXCompliance - propustí brány shody HotPDF s normami do generovaného reportového PDF. Požadovaný ICC profil, OutputIntent, tagování nebo tiskové předlohy si volající pořád připraví běžným pracovním postupem HotPDF dřív, než se spolehne na finální tvrzení o shodě

CompressionLevel - úroveň FlateDecode. Výchozí je clDefault

RenderDPI - hustota pixelů při rasterizaci stránky FastReport přes TMetafileCanvas. Vyšší hodnota znamená ostřejší text a čáry, ale větší metafile i PDF. 96 je nativní obrazové DPI FastReport; 200 (výchozí) dává tiskovou kvalitu bez obřích souborů

ExportMode - volí export celé stránky jako metafile, export přes canvas pro každý objekt, nebo nativní export objektů pro aktuálně mapované třídy view FastReport

AutoCreateURL - přeposílá se do THotPDF.AutoCreateURL, takže nativní text memo umí vytvořit URI anotace pro rozpoznané URL

FontEmbedding a NotEmbeddedFonts - přenášejí obvyklou politiku vkládání fontů HotPDF do generovaného reportového PDF

ActivateProtection, UserPassword, OwnerPassword, CryptKeyLength, ProtectOptions a EncryptMetadata - přeposílají nastavení heslového zabezpečení HotPDF, když se vyžaduje šifrovaný výstup reportu

 

Typický postup

 

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;

 

Zachované schopnosti

Režimy celé stránky a object-canvas zachovávají vektorový i rastrový obsah stránky vykreslený standardním layout enginem FastReport. Režim nativních objektů v současnosti zachovává podporovaný text memo jako PDF text s pozadím, vodorovným i svislým zarovnáním a stylem rámečku; obrázková view jako image XObjects; jednoduché tvary jako geometrii PDF; čárová view jako tahy; a URL view jako URI link anotace. Metadata na úrovni dokumentu se zachovávají v každém režimu

 

Omezení

Funkce PDF specifické pro FastReport vyžadující dodatečné strukturální mapování (pole AcroForm, pojmenované cíle a osnova dokumentu) se tímto adaptérem nepřenášejí. Vlastnosti bran PDF/A a PDF/X se přeposílají do HotPDF, ale předměty specifické pro normy, jako profily OutputIntent, zůstávají v odpovědnosti volajícího

 

Poznámka k balení

Adaptér se distribuuje jako volitelný doplněk, nikoli jako závislost hlavních balíčků HotPDF*.dpk, takže projekty bez FastReport si nestáhnou jednotky FastReport

 

Viz také: TQRHotPDFExportFilter, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Rozšířená podpora EMF/WMF