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