TppHotPDFDevice

مهايئ ReportBuilder (Lib\Addons\ReportBuilder\ppHotPDFDevice.pas)

 

FastReport adapter  QuickReport adapter  DevExpress adapter

فئة جهاز ReportBuilder تستخدم HotPDF كواجهة PDF backend بدلاً من ppPDFDevice الخاصة بـ ReportBuilder. وهي مخصصة للمشاريع التي تدمج HotPDF بالفعل وتريد backend PDF واحدًا عبر التطبيق كله

 

صيغة Delphi:

type

  TppHotPDFDevice = class(TppGraphicsDevice)

  public

    class function DeviceName: String; override;

    procedure StartJob; override;

    procedure EndJob; override;

    procedure CancelJob; override;

    procedure SetOutputStream(AStream: TStream);

    property FileName: string;

    property Title, Author, Subject, Keywords: string;

    property PDFVersion: TPDFVersType;

    property Compressed: Boolean;

    property CompressionLevel: TPDFCompressionLevel;

  end;

 

الوصف

ترث TppHotPDFDevice من TppGraphicsDevice، أي مستوى واحد فوق TppCustomScreenDevice / TppImageDevice، لذلك تدخل في سلسلة أجهزة ReportBuilder عند إسنادها إلى TppReport.PrinterDevice أو استخدامها كجهاز ناشر على TppPublisher. يتم الإبلاغ عن DeviceName كـ 'HotPDF'. ولأن تسجيل الأجهزة في ReportBuilder يتم عبر ppRptDeviceMap لا عبر RegisterComponents، فلا يوجد إدخال في لوحة مكونات IDE؛ ينشئ المستدعون TppHotPDFDevice مباشرة

 

كل صفحة تمر عبر TppGraphicsDevice.ReceivePage ترسم على TMetafileCanvas مؤقت، ينشأ في BeforeRenderPage وينهى في AfterRenderPage. ثم يمرر TMetafile الملتقط إلى مستورد ShowEnhancedMetafile ذي التحجيم التلقائي في HotPDF

 

1. StartJob creates the THotPDF instance, sets metadata, and calls BeginDoc.

2. BeforeRenderPage creates a TMetafile sized to spWidth x spHeight plus a TMetafileCanvas, and sets it as the inherited Canvas.

3. RenderPage (الموروث) يجتاز DrawCommands ويوجهها عبر GraphicsContext إلى metafile canvas لدينا

4. AfterRenderPage ينهي metafile بتحرير canvas، ويضيف صفحة HotPDF جديدة بحجم mmWidth x mmHeight بعد تحويله إلى PDF points، ثم يشغل metafile عبر ShowEnhancedMetafile

5. EndJob يستدعي HotPDF.EndDoc؛ وإذا كان الإخراج Stream، ينسخ البايتات من الملف المؤقت المكتوب داخليًا

 

الوصف

FileName - target PDF path. Used unless SetOutputStream has installed a stream.

Title / Author / Subject / Keywords - metadata المستند. عندما يكون Title فارغًا يعود الجهاز إلى FileName حتى يمتلك PDF دائمًا عنوانًا غير فارغ

PDFVersion - مستوى مواصفة PDF الذي يجب أن يستهدفه المستند. القيمة الافتراضية pdf17

Compressed - HotPDF stream compression on (default True). Set False for diagnostic PDFs.

CompressionLevel - FlateDecode level. Defaults to clDefault.

SetOutputStream(AStream) - يوجه بايتات PDF إلى AStream بدلاً من الكتابة إلى القرص. استدع قبل أن يطلق التقرير StartJob

 

يتم رسم كل صفحة تمر عبر TppGraphicsDevice.ReceivePage على TMetafileCanvas مؤقت (تم إنشاؤه في BeforeRenderPage، وتم إنهاؤه في AfterRenderPage)؛ ثم يتم تغذية TMetafile الملتقط إلى مستورد ShowEnhancedMetafile ذو القياس التلقائي لـ HotPDF:

 

1. تقوم StartJob بإنشاء مثيل THotPDF، وتعيين البيانات الميتا، واستدعاء BeginDoc

try

2. تقوم BeforeRenderPage بإنشاء TMetafile بحجم spWidth × spHeight بالإضافة إلى TMetafileCanvas، وتعيينه كـ Canvas الموروث

3. تقوم RenderPage (الموروثة) بتتبع DrawCommands وتوجيهها من خلال GraphicsContext إلى قماش ملف الميتا الخاص بنا

4. تقوم AfterRenderPage بإنهاء ملف الميتا (تحرير القماش)، وإضافة صفحة HotPDF جديدة بحجم mmWidth × mmHeight (محولة إلى نقاط PDF)، وتشغيل ملف الميتا عبر ShowEnhancedMetafile

5. تستدعي EndJob الأسلوب HotPDF.EndDoc؛ وإذا كانت المخرجات عبارة عن تدفق، فإنها تنسخ البايتات من الملف المؤقت المكتوب داخليًا

الخصائص

سير العمل النموذجي

finally

  Dev.Free;

end;

 

القدرات المحفوظة

محتوى الصفحة المتجه والنقطي المقدم بواسطة خط معالجة أمر الرسم القياسي لـ ReportBuilder؛ وسلاسل النصوص التي تم حلها بواسطة GDI؛ ويعطي التقاط ملف الميتا الافتراضي بدقة 200 DPI (قابل للتكوين عبر PixelsPerInch الموروث) مخرجات بجودة الطباعة دون ملفات ضخمة

 

قيود جسر ملف الميتا

نظرًا لأنه يتم التقاط الصفحات كملفات ميتا محسنة، لا يتم نشر ميزات PDF الخاصة بـ ReportBuilder والتي تتطلب معلومات هيكلية (حقول AcroForm، والوجهات المسماة، والمخططات التفصيلية، وبوابات امتثال PDF/A أو PDF/X)؛ وتكون المخرجات عبارة عن إعادة إنتاج مرئية دقيقة لما يقدمه ReportBuilder، وليست ملف PDF مهيكل

 

ملاحظة التعبئة

يعيش الجهاز في Lib\Addons\ReportBuilder\ وليس جزءًا من حزم HotPDF*.dpk الرئيسية، لذا لا يتم سحب تبعية ReportBuilder إلا بواسطة المشاريع التي تختار استخدام الجهاز؛ ويعيش اختبار الدخان (smoke_pp_hotpdf.dpr) جنبًا إلى جنب مع الوحدة

 

انظر أيضًا: TfrxHotPDFExport, TQRHotPDFExportFilter, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support