TfrxHotPDFExport

رابط FastReport 4 / FastReport VCL (Lib\Addons\FastReport4\frxHotPDFExport.pas)

 

QuickReport adapter  ReportBuilder device  DevExpress adapter

فیلتر خروجی PDF برای FastReport 4 / FastReport VCL که به جای نویسنده داخلی PDF خود FastReport از HotPDF به عنوان backend اصلی PDF استفاده می‌کند. این adapter برای پروژه‌هایی در نظر گرفته شده که از قبل HotPDF را در خود دارند و یک backend واحد PDF برای کل برنامه می‌خواهند

 

اعلان Delphi:

type

  TfrxHotPDFExport = class(TfrxCustomExportFilter)

  published

    property Compressed: Boolean default True;

    property Title, Author, Subject, Keywords: string;

    property PDFVersion: TPDFVersType default pdf17;

    property CompressionLevel: TPDFCompressionLevel default clDefault;

    property RenderDPI: Integer default 200;

  end;

 

توضیح

TfrxHotPDFExport از TfrxCustomExportFilter ارث می‌برد، بنابراین بدون هیچ تغییری در هسته FastReport در گردش‌کار معمول MyReport.Export(MyExportInstance) قرار می‌گیرد. این unit از RegisterComponents('FastReport 4.0 Export Filters', [TfrxHotPDFExport]) استفاده می‌کند، بنابراین وقتی unit به یک package اضافه شود، filter در component palette محیط IDE هم ظاهر می‌شود

 

به جای بازپیاده‌سازی کامل PDF emitter FastReport برای هر object، این adapter هر صفحه آماده را از طریق importer مبتنی بر enhanced-metafile در HotPDF عبور می‌دهد:

 

1. Start یک نمونه تازه THotPDF می‌سازد و فراداده سند را تنظیم می‌کند (Title / Author / Subject / Keywords / PDFVersion / Compression)

2. StartPage صفحه جدید HotPDF را بر حسب point طوری اندازه می‌کند که با ابعاد میلی‌متری صفحه گزارش FastReport هم‌خوان باشد

3. ExportObject بدون اثر است (کل صفحه در زمان FinishPage ضبط می‌شود، نه به‌ازای هر object)

4. FinishPage صفحه آماده FastReport را از طریق Report.PreviewPages.DrawPage به یک TMetafile رندر می‌کند، سپس metafile را از میان importer خودمقیاس HotPDF یعنی ShowEnhancedMetafile پخش می‌کند

5. Finish EndDoc را فراخوانی می‌کند و اگر لازم باشد PDF موقت را به Stream ارائه‌شده از سوی فراخوان کپی می‌کند

 

ویژگی‌ها

Compressed - فشرده‌سازی stream در HotPDF روشن است (پیش‌فرض True). برای PDFهای عیب‌یابی آن را False بگذارید (فایل‌هایی حدود 5 برابر بزرگ‌تر)

Title / Author / Subject / Keywords - فراداده سند. وقتی Title خالی باشد، adapter به Report.Name برمی‌گردد تا PDF همیشه یک title غیرخالی داشته باشد

PDFVersion - سطح مشخصات PDF که سند باید هدف بگیرد. مقدار پیش‌فرض pdf17 است

CompressionLevel - سطح FlateDecode. مقدار پیش‌فرض clDefault است

RenderDPI - چگالی پیکسلی که هنگام rasterizing صفحه FastReport از طریق TMetafileCanvas استفاده می‌شود. مقدار بالاتر متن و خطوط را واضح‌تر می‌کند اما metafile و PDF را بزرگ‌تر می‌سازد. 96 برابر DPI بومی صفحه‌نمایش FastReport است؛ 200 (پیش‌فرض) خروجی هم‌سطح چاپ می‌دهد بدون اینکه فایل‌ها بسیار بزرگ شوند

 

گردش‌کار معمول

 

Exp := TfrxHotPDFExport.Create(nil);

try

  Exp.FileName := 'Report.pdf';

  Exp.Title := 'Monthly Statement';

  Exp.PDFVersion := pdf17;

  Exp.RenderDPI := 200;

  frxReport1.Export(Exp);

finally

  Exp.Free;

end;

 

قابلیت‌های حفظ‌شده

محتوای برداری و raster صفحه (متن، خط‌ها، مستطیل‌ها، fillها، bitmapها) که توسط layout engine استاندارد FastReport رندر می‌شود. رشته‌های متنی resolveشده توسط GDI (HotPDF فونت‌های resolveشده در Windows را از طریق مسیر معمول font subset در HotPDF جاسازی می‌کند). فراداده در سطح سند

 

محدودیت‌های پل metafile

چون صفحه‌ها به صورت enhanced metafile ضبط می‌شوند، ویژگی‌های PDF ویژه FastReport که به اطلاعات ساختاری نیاز دارند (فیلدهای AcroForm، مقصدهای نام‌دار، outlineهای سند، دروازه‌های انطباق PDF/A یا PDF/X) منتقل نمی‌شوند. خروجی، بازتولید بصری دقیقی از چیزی است که FastReport روی صفحه / چاپگر رندر می‌کند، نه یک PDF ساختاریافته. پروژه‌هایی که به خروجی AcroForm یا انطباق PDF/A نیاز دارند باید مستقیم از API بومی HotPDF استفاده کنند

 

یادداشت بسته‌بندی

این adapter در Lib\Addons\FastReport4\ قرار دارد و بخشی از packageهای اصلی HotPDF*.dpk نیست، بنابراین وابستگی FastReport فقط توسط پروژه‌هایی وارد می‌شود که این adapter را فعال کنند. یک smoke test (smoke_frx_hotpdf.dpr) هم کنار این unit قرار دارد

 

همچنین ببینید: TQRHotPDFExportFilter, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, پشتیبانی پیشرفته EMF/WMF