TQRHotPDFExportFilter

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

 

FastReport adapter  ReportBuilder device  DevExpress adapter

Φίλτρο εξαγωγής QuickReport που χρησιμοποιεί HotPDF ως υποκείμενο PDF backend αντί για το QRPDFFilter του QuickReport. Προορίζεται για έργα που ήδη ενσωματώνουν HotPDF και θέλουν ένα ενιαίο PDF backend σε όλη την εφαρμογή

 

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;

 

Περιγραφή

Το TQRHotPDFExportFilter κατέρχεται από TQRExportFilter, επομένως εντάσσεται στην κανονική ροή MyReport.ExportToFilter(MyExporterInstance) χωρίς αλλαγές στον πυρήνα του QuickReport. Επειδή το TQRExportFilter δεν είναι απόγονος TComponent (είναι απλή κλάση στο design του QuickReport), δεν υπάρχει καταχώριση component στην IDE· οι callers δημιουργούν TQRHotPDFExportFilter απευθείας μέσω Create('out.pdf')

 

Το QuickReport αποδίδει κάθε προετοιμασμένη σελίδα σε TMetafile αποθηκευμένο στο QRPrinter.PageList. Αντί να επανυλοποιεί ολόκληρο το σύνολο callbacks TextOut / AcceptGraphic / AcceptBand ανά component, ο adapter τα αγνοεί (no-op overrides) και συλλέγει τα metafiles ανά σελίδα στο Finish:

 

1. Start(PaperWidth, PaperHeight, Font) - δημιουργεί την THotPDF instance, ορίζει metadata, καλεί BeginDoc και αποθηκεύει (PaperWidth, PaperHeight) ώστε το Finish να μπορεί να διαμορφώσει σωστά τις σελίδες

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

3. Finish - για κάθε cached metafile QRPrinter.PageList[i], προσθέτει (ή επαναχρησιμοποιεί) σελίδα HotPDF με μέγεθος PaperWidth / PaperHeight σε points και καλεί ShowEnhancedMetafile. Έπειτα καλεί EndDoc και απελευθερώνει

 

Ιδιότητες

Title / Author / Subject / Keywords - metadata εγγράφου. Όταν το Title είναι κενό, ο adapter χρησιμοποιεί Filename ως fallback ώστε το PDF να έχει πάντα μη κενό τίτλο. Ορίστε πριν κληθεί ExportToFilter

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

Compressed - HotPDF stream compression on (default True). Set False for diagnostic PDFs.

CompressionLevel - FlateDecode level. Defaults to clDefault.

SetOutputStream(AStream) - δρομολογεί τα PDF bytes στο AStream αντί να γράφει σε δίσκο. Καλέστε πριν από ExportToFilter. Εσωτερικά χρησιμοποιείται προσωρινό αρχείο επειδή το HotPDF αποθηκεύει στο EndDoc· τα bytes μεταδίδονται πίσω στο 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

Επειδή οι σελίδες καταγράφονται ως enhanced metafiles, PDF features ειδικά του QuickReport που απαιτούν δομικές πληροφορίες (AcroForm fields, named destinations, outlines, gates συμμόρφωσης PDF/A ή PDF/X) δεν μεταφέρονται. Η έξοδος είναι πιστή οπτική αναπαραγωγή αυτού που αποδίδει το QuickReport, όχι δομημένο PDF

 

Packaging note

Ο adapter βρίσκεται στο Lib\Addons\QuickReport\ και δεν αποτελεί μέρος των κύριων πακέτων HotPDF*.dpk, επομένως η εξάρτηση QuickReport τραβιέται μόνο από έργα που επιλέγουν τον adapter. Ένα smoke test (smoke_qr_hotpdf.dpr) βρίσκεται δίπλα στην unit

 

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