|
TQRHotPDFExportFilter QuickReport adapter (
|
FastReport adapter ReportBuilder device DevExpress adapter |
|
Φίλτρο εξαγωγής QuickReport που χρησιμοποιεί το HotPDF ως υποκείμενο PDF backend αντί για το δικό του QuickReport 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.
Το QuickReport αποδίδει κάθε ετοιμασμένη σελίδα σε
1. 2. 3. 3. Finish - για κάθε cached metafile QRPrinter.PageList[i], προσθέτει (ή επαναχρησιμοποιεί) σελίδα HotPDF με μέγεθος PaperWidth / PaperHeight σε points και καλεί ShowEnhancedMetafile. Έπειτα καλεί EndDoc και απελευθερώνει
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 Ο προσαρμογέας βρίσκεται στο
See also: TfrxHotPDFExport, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support |