TQRHotPDFExportFilter

Адаптер за QuickReport (Lib\Addons\QuickReport\qrHotPDFExport.pas)

 

FastReport adapter  ReportBuilder device  DevExpress adapter

PDF export филтър за 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, така че се включва в обичайния workflow MyReport.ExportToFilter(MyExporterInstance) без промени в ядрото на QuickReport. Понеже TQRExportFilter не е наследник на TComponent (а е обикновен клас в дизайна на QuickReport), няма IDE component registration - извикващите създават TQRHotPDFExportFilter директно чрез Create('out.pdf')

 

QuickReport рендира всяка подготвена страница в TMetafile, кеширан в QRPrinter.PageList. Вместо да пренаписва целия per-component набор от callback-и TextOut / AcceptGraphic / AcceptBand, адаптерът ги игнорира (no-op overrides) и събира per-page metafile-ите в Finish

 

1. Start(PaperWidth, PaperHeight, Font) - създава екземпляра THotPDF, задава метаданните, извиква BeginDoc и запазва (PaperWidth, PaperHeight), така че Finish да може да оформи страниците правилно

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

3. Finish - за всеки кеширан QRPrinter.PageList[i] metafile добавя (или преизползва) страница на HotPDF с размер PaperWidth / PaperHeight в points и извиква ShowEnhancedMetafile. После EndDoc и освобождава ресурсите

 

Свойства

Title / Author / Subject / Keywords - метаданни на документа. Когато Title е празен, адаптерът пада обратно към Filename, така че PDF винаги има ненулево заглавие. Задайте ги преди да бъде извикан ExportToFilter

PDFVersion - нивото на PDF спецификацията, към което трябва да се насочи документът. По подразбиране pdf17

Compressed - включва HotPDF stream compression (по подразбиране True). Задайте False за диагностични PDF-и

CompressionLevel - ниво на FlateDecode. По подразбиране clDefault

SetOutputStream(AStream) - насочва PDF байтовете в AStream вместо да ги записва на диск. Извикайте преди ExportToFilter. Вътрешно се използва временен файл, защото HotPDF записва при EndDoc; байтовете се връщат по поток в Finish

 

Typical workflow

 

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

try

  Filter.Title := 'Monthly Statement';

  Filter.PDFVersion := pdf17;

  QuickRep1.ExportToFilter(Filter);

finally

  Filter.Free;

end;

 

Запазени възможности

Векторно и raster съдържание на страница, рендирано от стандартния preview / printer pipeline на QuickReport. GDI-resolved текстови низове. Размерът на страницата следва PaperWidth / PaperHeight, подадени на Start от QuickReport

 

Ограничения на metafile моста

Тъй като страниците се заснемат като enhanced metafile-и, QuickReport-специфичните PDF възможности, които изискват структурна информация (AcroForm полета, именувани дестинации, outlines, PDF/A или PDF/X conformance gates), не се пренасят. Изходът е вярно визуално възпроизвеждане на това, което QuickReport рендира, а не структуриран PDF

 

Бележка за пакетирането

Адаптерът живее в Lib\Addons\QuickReport\ и не е част от основните пакети HotPDF*.dpk, така че зависимостта от QuickReport се включва само от проекти, които избират адаптера. Покрай единицата има и smoke тест (smoke_qr_hotpdf.dpr)

 

Виж също: TfrxHotPDFExport, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Разширена поддръжка на EMF/WMF