TQRHotPDFExportFilter

QuickReport adapter (Lib\Addons\QuickReport\qrHotPDFExport.pas)

 

FastReport adapter  ReportBuilder device  DevExpress adapter

Exportný filter QuickReportu, ktorý používa HotPDF ako základný PDF backend namiesto vlastného QRPDFFilter QuickReportu. Určený pre projekty, ktoré už HotPDF vkladajú a chcú jeden PDF backend naprieč celou aplikáciou

 

Delphi declaration:

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;

 

Opis

TQRHotPDFExportFilter dedí z TQRExportFilter, takže sa bez zmien jadra QuickReportu zapojí do bežného workflow MyReport.ExportToFilter(MyExporterInstance). Keďže TQRExportFilter nie je potomok TComponent (v návrhu QuickReportu je to obyčajná trieda), neexistuje registrácia komponentov IDE - volajúci vytvárajú TQRHotPDFExportFilter priamo cez Create('out.pdf')

 

QuickReport vykresľuje každú pripravenú stranu do TMetafile uloženého v QRPrinter.PageList. Namiesto opätovnej implementácie celého súboru callbackov TextOut / AcceptGraphic / AcceptBand pre jednotlivé komponenty adaptér tieto volania ignoruje (no-op override) a v Finish zbiera metafiles pre jednotlivé strany

 

1. Start(PaperWidth, PaperHeight, Font) - vytvorí inštanciu THotPDF, nastaví metadáta, zavolá BeginDoc a uloží PaperWidth, PaperHeight, aby Finish vedel správne prispôsobiť strany

2. NewPage / EndPage / TextOut / AcceptGraphic - no-op (the metafile already has the rendered content).

3. Finish - pre každý uložený metafile QRPrinter.PageList[i] pridá alebo znovu použije stranu HotPDF s rozmermi PaperWidth / PaperHeight v bodoch a zavolá ShowEnhancedMetafile. Potom EndDoc a uvoľnenie

 

Vlastnosti

Title / Author / Subject / Keywords - metadáta dokumentu. Keď je Title prázdny, adaptér sa vráti na Filename, takže PDF má vždy neprázdny názov. Nastavte pred zavolaním ExportToFilter

PDFVersion - PDF specification level the document should target. Defaults to pdf17.

Compressed - zapína kompresiu prúdu HotPDF (predvolene True). Nastavte False pre diagnostické PDF

CompressionLevel - FlateDecode level. Defaults to clDefault.

SetOutputStream(AStream) - nasmeruje bajty PDF do AStream namiesto zápisu na disk. Zavolajte pred ExportToFilter. Vo vnútri sa používa dočasný súbor, pretože HotPDF ukladá až pri EndDoc; bajty sa v Finish streamujú späť

 

Typical workflow

 

Filter := TQRHotPDFExportFilter.Create('Report.pdf');

try

  Filter.Title := 'Monthly Statement';

  Filter.PDFVersion := pdf17;

  QuickRep1.ExportToFilter(Filter);

finally

  Filter.Free;

end;

 

Capabilities preserved

Vektorový aj rastrový obsah strany vykreslený štandardným preview / printer pipeline QuickReportu. Textové reťazce vyriešené cez GDI. Veľkosť strán sa riadi PaperWidth / PaperHeight odovzdanými do Start z QuickReportu

 

Limitations of the metafile bridge

Keďže strany sa zachytávajú ako enhanced metafiles, funkcie PDF špecifické pre QuickReport, ktoré vyžadujú štrukturálne informácie (polia AcroForm, pomenované ciele, osnovy, brány zhody PDF/A alebo PDF/X), sa neprenášajú. Výstup je verným vizuálnym zobrazením toho, čo QuickReport vykreslí, nie štruktúrované PDF

 

Packaging note

Adaptér žije v Lib\Addons\QuickReport\ a nie je súčasťou hlavných balíkov HotPDF*.dpk, takže závislosť QuickReport sa pridá len do projektov, ktoré sa k adaptéru prihlásia. Smoke test (smoke_qr_hotpdf.dpr) je uložený vedľa jednotky

 

See also: TfrxHotPDFExport, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support