TQRHotPDFExportFilter

QuickReport-tilpasning (Lib\Addons\QuickReport\qrHotPDFExport.pas)

 

FastReport adapter  ReportBuilder device  DevExpress adapter

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