مقالة تقنية

رسم قماش HotPDF

· برامج PDF

يوضح هذا المثال لمكون HotPDF كيفية إنشاء رسومات PDF بنمط متجه باستخدام نفس سير عمل TCanvas الذي يستخدمه مطورو Delphi بالفعل في تطبيقات VCL. بدلاً من التعامل مع إخراج PDF كنموذج رسم منفصل، يكتب المثال النص والأشكال من خلال HotPDF.Canvas ثم يحفظ النتيجة كملف PDF.

هذا المثال مفيد عندما يحتوي التطبيق بالفعل على تعليمات برمجية لإنشاء مخططات أو رسوم بيانية أو معاينات أو عناصر تحكم مخصصة تعتمد على TCanvas. النمط الأساسي بسيط: قم بإنشاء THotPDF، وقم بتعيين ملف الإخراج، واستدعِ BeginDoc، وقم بتكوين حالة القماش، وارسم المحتوى، وأنهِ الملف باستخدام EndDoc.

في التعليمات البرمجية أدناه، تقوم حلقة الرسم بعرض ثلاث مجموعات من الأشكال الملونة. تستخدم كل مجموعة نفس نظام الإحداثيات وتغير فقط الشكل الأولي المستخدم: مستطيل أو بيضاوي أو مستطيل ذو زوايا مستديرة. هذا يجعلها مرجعًا موجزًا لاختبار ألوان القماش وسلوك التعبئة ووضع النص وتخطيط الصفحة في ملف PDF تم إنشاؤه.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
program CanvasDraw;
{$APPTYPE CONSOLE}
uses
{$IFDEF VER230} System.SysUtils, System.Classes, Vcl.Graphics, {$ELSE} SysUtils, Classes, Graphics, {$ENDIF} HPDFDoc;
 
var
   I, Y: Integer;
   HotPDF: THotPDF;
 
begin
    HotPDF:= THotPDF.Create(nil);
    try
        Randomize;
        HotPDF.AutoLaunch := true;
        HotPDF.FileName := 'CanvasDraw.pdf';
        HotPDF.BeginDoc;                                          // Create PDF file
        HotPDF.Canvas.Font.Size := 14;                            // Set canvas font size
        I :=20;
        Y := 60;
        HotPDF.Canvas.TextOut(10, 30, 'Canvas Rectangles');      //  Print text
        while I <= 700 do
        begin                                                   //  Draw colour
            HotPDF.Canvas.Brush.Color := random($FFFFFF);         //  rectangles
            HotPDF.Canvas.Rectangle(I, Y, I+90, Y + 160);
            Inc(I, 30);
            Inc( Y, 3 );
        end;
 
        I :=20;
        Y := 350;
        HotPDF.Canvas.TextOut(10, 320, 'Canvas Ellipses');         // Print text
        while I <= 700 do                                       //  Draw colour
        begin                                                   //  ellipses
            HotPDF.Canvas.Brush.Color := random($FFFFFF);
            HotPDF.Canvas.Ellipse(I, Y, I+90, Y + 160);
            Inc(I, 30);
            Inc( Y, 3 );
        end;
 
        I :=20;
        Y := 680;
        HotPDF.Canvas.TextOut(10, 650, 'Canvas RoundRects');      // Print text
        while I <= 700 do
        begin
            HotPDF.Canvas.Brush.Color := random($FFFFFF);         //  Draw colour
            HotPDF.Canvas.RoundRect(I, Y, I+90, Y + 160, 20, 20); //  roundrects
            Inc(I, 30);                                        
            Inc( Y, 3 );
        end;
        HotPDF.EndDoc;                                            // Close PDF file
    finally
        HotPDF.Free;
    end;
end.

ما يوضحه المثال.

  • كيفية تهيئة THotPDF لمهمة إنشاء ملفات PDF بنمط وحدة التحكم باستخدام Delphi.
  • كيفية استخدام HotPDF.Canvas للرسم النصي والأشكال الهندسية الأساسية.
  • كيفية تأثير ألوان الفرشاة على الأشكال المملوءة في ملف PDF الذي تم إنشاؤه.
  • كيفية استخدام الإحداثيات المتكررة لإنشاء مخرجات مرئية متعددة الطبقات دون لقطات شاشة بتانية.

ملاحظات التنفيذ.

صفحة PDF لا يتم إنهاؤها إلا بعد استدعاء EndDoc، لذا يجب أن يحافظ الكود الإنتاجي على كتلة try/finally حول دورة حياة المكون لتجنب ترك ملف غير مكتمل في حالة فشل الرسم. للحصول على نتائج اختبار حتمية، استبدل Randomize والألوان العشوائية بقيم ألوان ثابتة.

يعتبر الرسم باستخدام Canvas مثاليًا للتقارير والتراكبات والرسوم البيانية والنماذج التي تم إنشاؤها، حيث يجب أن يظل الإخراج واضحًا بغض النظر عن مستوى التكبير. إذا كان الرسم المصدر يعتمد على DPI للشاشة أو الخطوط الخاصة بالجهاز، فتحقق من PDF النهائي على نظام نظيف قبل توزيعه.