|
Eksportfilter for QuickReport som bruker HotPDF som den underliggende PDF-motoren i stedet for QuickReports egen QRPDFFilter. Beregnet for prosjekter som allerede bygger inn HotPDF og vil ha én felles PDF-motor i hele applikasjonen
Delphi-erklæring:
type
TQRHotPDFExportFilter = class(TQRExportFilter)
public
constructor Create(Filename: string); override;
procedure SetOutputStream(AStream: TStream);
property Title, Author, Subject, Keywords: string;
property PDFVersion: TPDFVersType;
property Compressed: Boolean;
property CompressionLevel: TPDFCompressionLevel;
end;
Beskrivelse
TQRHotPDFExportFilter arver fra TQRExportFilter, så den passer inn i den vanlige MyReport.ExportToFilter(MyExporterInstance)-flyten uten noen endringer i QuickReport-kjernen. Fordi TQRExportFilter ikke er en TComponent-etterkommer, men en ren klasse i QuickReports design, finnes det ingen IDE-komponentregistrering kallere instansierer TQRHotPDFExportFilter direkte via Create('out.pdf')
QuickReport rendrer hver forberedte side til en TMetafile som er bufret i QRPrinter.PageList. I stedet for å implementere hele tilbakekallssettet per komponent på nytt, TextOut / AcceptGraphic / AcceptBand, ignorerer adapteren disse som no-op-overstyringer og henter metafilene per side i Finish:
1. Start(PaperWidth, PaperHeight, Font) - oppretter THotPDF-instansen, setter metadata, kaller BeginDoc og lagrer (PaperWidth, PaperHeight) slik at Finish kan forme sidene riktig
2. NewPage / EndPage / TextOut / AcceptGraphic - no-op (metafilen har allerede det rendrede innholdet)
3. Finish - for hver bufrede QRPrinter.PageList[i]-metafil legger den til, eller gjenbruker, en HotPDF-side med størrelse PaperWidth / PaperHeight i punkter og kaller ShowEnhancedMetafile. Deretter EndDoc og frigjør
Egenskaper
Title / Author / Subject / Keywords - dokumentmetadata. Når Title er tom, faller adapteren tilbake til Filename slik at PDF-en alltid har en ikke-tom tittel. Sett før ExportToFilter kalles
PDFVersion - PDF-spesifikasjonsnivået dokumentet skal sikte mot. Standard er pdf17
Compressed - HotPDF-strømkkomprimering på, standard True. Sett til False for diagnostiske PDF-er
CompressionLevel - FlateDecode-nivå. Standard er clDefault
SetOutputStream(AStream) - ruter PDF-bytene inn i AStream i stedet for å skrive til disk. Kall før ExportToFilter. Internt brukes en midlertidig fil fordi HotPDF lagrer ved EndDoc; bytene strømmes tilbake i Finish
Typisk arbeidsflyt
Filter := TQRHotPDFExportFilter.Create('Report.pdf');
try
Filter.Title := 'Monthly Statement';
Filter.PDFVersion := pdf17;
QuickRep1.ExportToFilter(Filter);
finally
Filter.Free;
end;
Bevarte egenskaper
Vektor- og raster-sideinnhold rendret av QuickReports standard forhåndsvisnings- og skriverpipelinje. Tekststrenger løst av GDI. Sidestørrelsen følger PaperWidth / PaperHeight som QuickReport sender til Start
Begrensninger i metafile-broen
Fordi sider fanges som enhanced metafiles, blir ikke QuickReport-spesifikke PDF-funksjoner som krever strukturell informasjon, som AcroForm-felt, navngitte destinasjoner, disposisjoner eller PDF/A- og PDF/X-samsvarskontroller, videreført. Utdataene er en tro visuell gjengivelse av det QuickReport rendrer, ikke en strukturert PDF
Pakkingsnotat
Tilpasningen ligger i Lib\Addons\QuickReport\ og er ikke en del av de viktigste HotPDF*.dpk-pakkene, så QuickReport-avhengigheten hentes bare inn av prosjekter som velger tilpasningen. En smoke-test (smoke_qr_hotpdf.dpr) ligger ved siden av enheten
Se også: TfrxHotPDFExport, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Forbedret EMF/WMF-støtte
|