TQRHotPDFExportFilter

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

 

FastReport adapter  ReportBuilder device  DevExpress adapter

Filter xuất QuickReport dùng HotPDF làm backend PDF phía dưới thay vì QRPDFFilter. Dành cho các project vốn đã nhúng HotPDF và muốn một backend PDF duy nhất xuyên suốt toàn ứng dụng.

Khai báo 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 PDFACompliance: string;

property PDFXCompliance: string;

property Compressed: Boolean;

property CompressionLevel: TPDFCompressionLevel;

end;

Mô tả

TQRHotPDFExportFilter kế thừa từ TQRExportFilter, nên nó cài vừa vào MyReport.ExportToFilter(MyExporterInstance) mà không cần thay đổi lõi QuickReport nào. Vì TQRExportFilter không phải là một TComponent hậu duệ (nó là một lớp thường trong thiết kế QuickReport), không có đăng ký component IDE - caller tự khởi tạo TQRHotPDFExportFilter trực tiếp qua Create('out.pdf').

QuickReport kết xuất từng trang đã chuẩn bị vào một TMetafile được cache trong QRPrinter.PageList. Thay vì triển khai lại toàn bộ TextOut / AcceptGraphic / AcceptBand callback được đặt, adapter bỏ qua chúng (các ghi đè no-op) và gom các metafile từng trang trong Finish:

1. Start(PaperWidth, PaperHeight, Font) - tạo THotPDF thể hiện, đặt metadata, gọi BeginDocvà lưu (PaperWidth, PaperHeight) nên Finish có thể định hình các trang đúng.

2. NewPage / EndPage / TextOut / AcceptGraphic - no-op (metafile đã sẵn có nội dung kết xuất).

3. Finish - cho từng QRPrinter.PageList[i] metafile, thêm (hoặc tái dùng) một trang HotPDF cỡ PaperWidth / PaperHeight theo điểm và gọi ShowEnhancedMetafile. Sau đó EndDoc và giải phóng.

Thuộc tính

Title / Author / Subject / Keywords - metadata tài liệu. Khi Title rỗng, adapter dự phòng sang Filename nên PDF luôn có tiêu đề khác rỗng. Đặt trước ExportToFilter được gọi.

PDFVersion - mức đặc tả PDF mà tài liệu nên nhắm tới. Mặc định pdf17.

PDFACompliance và PDFXCompliance - chuyển tiếp các cổng tuân thủ chuẩn của HotPDF vào PDF báo cáo được sinh. Caller vẫn phải chuẩn bị mọi ICC profile, OutputIntent, tagging hay tài sản prepress cần thiết qua workflow HotPDF bình thường trước khi tin vào tuyên bố tuân thủ cuối cùng.

Compressed - bật nén stream HotPDF (mặc định True). Đặt False cho các PDF chẩn đoán.

CompressionLevel - mức FlateDecode. Mặc định là clDefault.

SetOutputStream(AStream) - điều hướng các byte PDF vào AStream thay vì ghi ra đĩa. Gọi trước khi ExportToFilter. Nội bộ dùng một tệp tạm vì HotPDF lưu khi EndDoc; các byte được đẩy ngược về trong Finish.

Quy trình điển hình

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

try

Filter.Title := 'Monthly Statement';

Filter.PDFVersion := pdf17;

Filter.PDFACompliance := '3B';

QuickRep1.ExportToFilter(Filter);

finally

Filter.Free;

end;

Các khả năng được giữ nguyên

Nội dung trang vector và raster do pipeline xem-trước / máy-in chuẩn của QuickReport kết xuất. Các chuỗi văn bản đã phân giải GDI. Kích thước trang bám theo PaperWidth / PaperHeight được trao cho Start bởi QuickReport.

Giới hạn của cầu nối metafile

Vì các trang được bắt dưới dạng enhanced metafile, các tính năng PDF riêng của QuickReport cần thông tin cấu trúc (trường AcroForm, named destination và outline) không được truyền qua. Các thuộc tính cổng PDF/A và PDF/X được chuyển tiếp tới HotPDF, nhưng các tài sản riêng-theo-chuẩn như OutputIntent profile vẫn là trách nhiệm của caller. Đầu ra là một bản tái hiện hiển thị trung thực những gì QuickReport kết xuất, không phải một PDF có cấu trúc.

Ghi chú đóng gói

Adapter nằm trong Lib\Addons\QuickReport\ và không thuộc HotPDF*.dpk package, nên phụ thuộc QuickReport chỉ được kéo vào bởi các project chủ động chọn adapter. Một smoke test (smoke_qr_hotpdf.dpr) nằm cạnh đơn vị.

Xem thêm: TfrxHotPDFExport, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Hỗ trợ EMF/WMF nâng cao