TQRHotPDFExportFilter

Adapter za QuickReport (Lib\Addons\QuickReport\qrHotPDFExport.pas)

 

FastReport adapter  ReportBuilder device  DevExpress adapter

Izvozni filter QuickReport, ki uporablja HotPDF kot osnovno zaledje PDF namesto QuickReportovega lastnega QRPDFFilter. Namenjen je projektom, ki že vključujejo HotPDF in želijo eno samo zaledje PDF v celotni aplikaciji

 

Deklaracija v Delphi:

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;

 

Description

TQRHotPDFExportFilter izhaja iz TQRExportFilter, zato se brez sprememb jedra QuickReporta vključi v običajen potek MyReport.ExportToFilter(MyExporterInstance). Ker TQRExportFilter ni potomec TComponent (v QuickReportovi zasnovi je navaden razred), registracije komponente v IDE ni - klicatelji TQRHotPDFExportFilter ustvarijo neposredno prek Create('out.pdf')

 

QuickReport vsako pripravljeno stran izriše v TMetafile, ki je predpomnjen v QRPrinter.PageList. Namesto ponovne implementacije celotnega nabora povratnih klicev TextOut / AcceptGraphic / AcceptBand po posameznih komponentah prilagoditev te preprosto ignorira (prekrivne metode brez učinka) in v Finish pobere metafile po straneh:

 

1. Start(PaperWidth, PaperHeight, Font) - ustvari primerek THotPDF, nastavi metapodatke, pokliče BeginDoc in shrani (PaperWidth, PaperHeight), da lahko Finish pravilno oblikuje strani

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

3. Finish - za vsak predpomnjeni metafile QRPrinter.PageList[i] doda (ali znova uporabi) stran HotPDF, velikostno prilagojeno PaperWidth / PaperHeight v točkah, in pokliče ShowEnhancedMetafile. Nato pokliče EndDoc in sprosti

 

Lastnosti

Title / Author / Subject / Keywords - metapodatki dokumenta. Ko je Title prazen, se adapter vrne na Filename, zato ima PDF vedno neprazen naslov. Nastavite jih pred klicem ExportToFilter

PDFVersion - raven specifikacije PDF, ki naj jo dokument cilja. Privzeto pdf17

Compressed - vklop stiskanja toka HotPDF (privzeto True). Za diagnostične PDF nastavite False

CompressionLevel - raven FlateDecode. Privzeto clDefault

SetOutputStream(AStream) - bajte PDF preusmeri v AStream namesto zapisovanja na disk. Pokličite pred ExportToFilter. Interno se uporabi začasna datoteka, ker HotPDF shrani ob EndDoc; bajti se v Finish pretakajo nazaj

 

Tipičen potek dela

 

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

try

  Filter.Title := 'Monthly Statement';

  Filter.PDFVersion := pdf17;

  QuickRep1.ExportToFilter(Filter);

finally

  Filter.Free;

end;

 

Ohranjene zmožnosti

Vektorska in rastrska vsebina strani se izriše prek QuickReportovega standardnega cevovoda za predogled in tiskanje. Besedilni nizi se razrešijo prek GDI. Velikost strani sledi PaperWidth / PaperHeight, ki ju QuickReport posreduje v Start

 

Omejitve mostu z metafilom

Ker so strani zajete kot izboljšani metafilni zapisi, se zmožnosti PDF, specifične za QuickReport in odvisne od strukturnih informacij (polja AcroForm, poimenovani cilji, orisi, zahteve skladnosti PDF/A ali PDF/X), ne prenesejo. Izhod je zvest vizualni posnetek tega, kar QuickReport izriše, ne pa strukturiran PDF

 

Opomba o pakiranju

Adapter živi v Lib\Addons\QuickReport\ in ni del glavnih paketov HotPDF*.dpk, zato se odvisnost QuickReport naloži samo v projekte, ki adapter vključijo. Preizkus dima (smoke_qr_hotpdf.dpr) je v isti mapi kot enota

 

Glej tudi: TfrxHotPDFExport, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Napredna podpora za EMF/WMF