HTML'si HotPDF Kanvas Çizimi | losLab Software Development Blog

Teknik makale

HotPDF Kanvas Çizimi

· PDF Yazılımı

Bu HotPDF Bileşeni örneği, Delphi geliştiricilerinin VCL uygulamalarında halihazırda kullandığı aynı TCanvas iş akışıyla vektör tarzı PDF çizimlerinin nasıl oluşturulacağını gösterir. Örnek, PDF çıktısını ayrı bir çizim modeli olarak ele almak yerine, metni ve şekilleri HotPDF.Canvas aracılığıyla yazar ve ardından sonucu bir PDF belgesi olarak kaydeder.

Örnek, bir uygulamada halihazırda TCanvas'a dayalı grafik, diyagram, önizleme veya özel kontrol oluşturma kodu bulunduğunda kullanışlıdır. Temel model basittir: THotPDF oluşturun, çıktı dosyasını atayın, BeginDoc'u çağırın, tuval durumunu yapılandırın, içeriği çizin ve dosyayı EndDoc ile tamamlayın.

Aşağıdaki kodda, çizim döngüsü üç grup renkli şekli oluşturur. Her grup aynı koordinat sistemini kullanır ve yalnızca çizilen ilkel öğeyi değiştirir: Dikdörtgen, Elips veya Yuvarlak Dikdörtgen. Bu, onu oluşturulan bir PDF'de tuval renklerini, dolgu davranışını, metin yerleşimini ve sayfa düzenini test etmek için kompakt bir referans haline getirir.

Urvanov Sözdizimi Vurgulayıcı v2.9.1
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.

Örnek neyi gösteriyor?

  • Konsol tarzı Delphi PDF oluşturma görevi için THotPDF nasıl başlatılır.
  • Metin ve temel geometrik çizim için HotPDF.Canvas nasıl kullanılır?
  • Fırça renklerinin oluşturulan PDF'deki doldurulmuş şekilleri nasıl etkilediği.
  • Tekrarlanan koordinatlar, bitmap ekran görüntüleri olmadan nasıl katmanlı görsel çıktı oluşturabilir?

Uygulama notları

PDF sayfası yalnızca EndDoc çağrıldıktan sonra sonlandırılır, bu nedenle üretim kodu try/finally bloğunu bileşen ömrü boyunca tutmalı ve çizim başarısız olursa kısmen yazılmış bir dosya bırakmaktan kaçınmalıdır. Deterministik test çıktısı için Rastgele ve rastgele renkleri sabit renk değerleriyle değiştirin.

Kanvas tabanlı PDF çizimi, çıktının herhangi bir yakınlaştırma düzeyinde keskin kalması gereken raporlar, kaplamalar, diyagramlar ve oluşturulan formlar için en iyi sonucu verir. Kaynak çizim ekran DPI'sına veya cihaza özel yazı tiplerine bağlıysa göndermeden önce son PDF'yi temiz bir sistemde doğrulayın.

[Format Süresi: 0,0019 saniye]