TQRHotPDFExportFilter

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

 

FastReport adapter  ReportBuilder device  DevExpress adapter

QuickReport eksporto filtras, kuris vietoj QuickReport savito QRPDFFilter naudoja HotPDF kaip pagrindinį PDF modulį. Tinka projektams, kurie jau įterpė HotPDF ir nori vieno PDF modulo visoje programoje

 

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;

 

Aprašas

TQRHotPDFExportFilter paveldi iš TQRExportFilter, todėl įprastai įsiterpia į MyReport.ExportToFilter(MyExporterInstance) darbo eigą be jokių QuickReport branduolio pakeitimų. Kadangi TQRExportFilter nėra TComponent palikuonis (jis yra paprasta klasė QuickReport kūrime), IDE komponento registracija nevyksta - TQRHotPDFExportFilter kuriamas tiesiogiai su Create('out.pdf')

 

QuickReport kiekvieną paruoštą puslapį išveda į TMetafile, saugomą QRPrinter.PageList talpykloje. Vietoje to, kad būtų iš naujo kuriamas visas vieneto lygio TextOut / AcceptGraphic / AcceptBand iškvietimų rinkinys, adapteris šiuos metodus ignoruoja (no-op perrašymai) ir Finish cikle surenka puslapio metafailus

 

1. Start(PaperWidth, PaperHeight, Font) - sukuria THotPDF egzempliorių, nustato metaduomenis, iškviečia BeginDoc ir išsaugo (PaperWidth, PaperHeight), kad Finish galėtų teisingai formuoti puslapius

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

3. Finish - kiekvienam įrašytam QRPrinter.PageList[i] metafailui pridėkite (arba pakartotinai naudokite) HotPDF puslapį, kurio dydis taškais yra PaperWidth / PaperHeight, ir iškvieskite ShowEnhancedMetafile. Tada kvieskite EndDoc ir atlaisvinkite

 

Savybės

Title / Author / Subject / Keywords - dokumento metaduomenys. Jei Title nenurodytas, adapteris naudoja Filename, todėl PDF visada turi ne tuščią pavadinimą. Nustatykite prieš iškviečiant ExportToFilter

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

Compressed - HotPDF srauto glaudinimas įjungtas (numatyta True). Nustatykite False diagnostiniams PDF

CompressionLevel - FlateDecode level. Defaults to clDefault.

SetOutputStream(AStream) - peradresuoja PDF baitus į AStream vietoj įrašymo į diską. Kviečiama prieš ExportToFilter. Viduje naudojamas laikinas failas, nes HotPDF išsaugo informaciją EndDoc metu; baitai grąžinami per Finish

 

Typical workflow

 

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

try

  Filter.Title := 'Monthly Statement';

  Filter.PDFVersion := pdf17;

  QuickRep1.ExportToFilter(Filter);

finally

  Filter.Free;

end;

 

Capabilities preserved

Vector and raster page content rendered by QuickReport's standard preview / printer pipeline. GDI-resolved text strings. Page sizing follows the PaperWidth / PaperHeight handed to Start by QuickReport.

 

Limitations of the metafile bridge

Kadangi puslapiai gaunami kaip patobulinti metafailai, QuickReport specifinės PDF savybės, kurioms reikia struktūrinės informacijos (AcroForm laukai, vardinės paskirties vietos, kontūrai, PDF/A arba PDF/X atitikties vartai), nėra perduodamos. Rezultate gaunamas tikslus vizualinis QuickReport vaizdo atkartojimas, o ne struktūruotas PDF

 

Packaging note

Adapteris yra Lib\Addons\QuickReport\ aplanke ir nėra pagrindinių HotPDF*.dpk paketų dalis, todėl QuickReport priklausomybė įtraukiama tik projektuose, kurie sąmoningai renkasi šį adapterį. Šalia modulio yra smoke testas (smoke_qr_hotpdf.dpr)

 

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