Dit HotPDF Component-voorbeeld laat zien hoe u vectorachtige PDF-tekeningen maakt met dezelfde TCanvas-workflow die Delphi-ontwikkelaars al in VCL-toepassingen gebruiken. In plaats van PDF-uitvoer als een apart tekenmodel te behandelen, schrijft het voorbeeld tekst en vormen via HotPDF.Canvas en slaat het resultaat daarna op als PDF-document.
Het voorbeeld is nuttig wanneer een toepassing al grafieken, diagrammen, previews of eigen control-rendering op basis van TCanvas heeft. Het kernpatroon is eenvoudig: maak THotPDF aan, wijs het uitvoerbestand toe, roep BeginDoc aan, configureer de canvasstatus, teken de inhoud en voltooi het bestand met EndDoc.
In de onderstaande code rendert de tekenlus drie groepen gekleurde vormen. Elke groep gebruikt hetzelfde coördinatensysteem en wijzigt alleen de getekende primitieve: Rectangle, Ellipse of RoundRect. Daardoor is dit een compacte referentie voor het testen van canvaskleuren, vulgedrag, tekstplaatsing en paginalay-out in een gegenereerde 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. |
Wat het voorbeeld laat zien
- Hoe u THotPDF initialiseert voor een consoleachtige Delphi-taak voor PDF-generatie.
- Hoe u HotPDF.Canvas gebruikt voor tekst en eenvoudige geometrische tekeningen.
- Hoe brush-kleuren gevulde vormen in de gegenereerde PDF beïnvloeden.
- Hoe herhaalde coördinaten gelaagde visuele uitvoer kunnen opbouwen zonder bitmap-schermafbeeldingen.
Implementatienotities
De PDF-pagina wordt pas definitief gemaakt nadat EndDoc is aangeroepen. Productiecode moet daarom het try/finally-blok rond de levensduur van de component behouden en voorkomen dat er een gedeeltelijk geschreven bestand achterblijft als het tekenen mislukt. Vervang Randomize en willekeurige kleuren door vaste kleurwaarden voor deterministische testuitvoer.
Canvas-gebaseerd tekenen naar PDF werkt het best voor rapporten, overlays, diagrammen en gegenereerde formulieren waarbij de uitvoer op elk zoomniveau scherp moet blijven. Als de brontekening afhankelijk is van scherm-DPI of apparaatspecifieke lettertypen, controleer de uiteindelijke PDF dan op een schoon systeem voordat u deze uitlevert.