|
TQRHotPDFExportFilter QuickReport adapter (
|
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. 3. Finish - για κάθε cached metafile QRPrinter.PageList[i], προσθέτει (ή επαναχρησιμοποιεί) σελίδα HotPDF με μέγεθος PaperWidth / PaperHeight σε points και καλεί ShowEnhancedMetafile. Έπειτα καλεί EndDoc και απελευθερώνει
Ιδιότητες Title / Author / Subject / Keywords - metadata εγγράφου. Όταν το Title είναι κενό, ο adapter χρησιμοποιεί Filename ως fallback ώστε το PDF να έχει πάντα μη κενό τίτλο. Ορίστε πριν κληθεί ExportToFilter
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
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 |