Detta HotPDF-komponentexempel visar hur man skapar PDF-ritningar i vektorstil med samma TCanvas-arbetsflöde som Delphi-utvecklare redan använder i VCL-applikationer. Istället för att behandla PDF-utdata som en separat ritmodell, skriver exemplet text och former genom HotPDF.Canvas och sparar sedan resultatet som ett PDF-dokument.
Exemplet är användbart när ett program redan har diagram, diagram, förhandsgranskning eller anpassad kontrollrenderingskod baserad på TCanvas. Kärnmönstret är enkelt: skapa THotPDF, tilldela utdatafilen, anrop BeginDoc, konfigurera arbetsytan, rita innehållet och avsluta filen med EndDoc.
I koden nedan återger ritslingan tre grupper av färgade former. Varje grupp använder samma koordinatsystem och ändrar endast den primitiva som ritas: Rektangel, Ellips eller RoundRect. Detta gör den till en kompakt referens för att testa dukfärger, fyllningsbeteende, textplacering och sidlayout i en genererad PDF.
Varför canvasutdata spelar roll
Canvaslik ritning är praktisk när PDF-filen ska innehålla genererad geometri i stället för kopierade bilder. Diagram, etiketter, dashboards, kartöverlägg, formulärdekorationer och enkla grafer kan vara skarpa vid hög zoom eftersom de ritas som PDF-operationer och inte som skärmbilder.
Mönstret är också lätt att återanvända. Om en befintlig VCL-kontroll redan kan rita sig själv med pennor, penslar, rektanglar och text kan exportkoden ofta använda samma koordinatmodell. Huvudarbetet blir att anpassa sidstorlek, marginaler och enheter i stället för att skriva om ritlogiken.
Koordinatplanering
- Definiera sidans origo och marginaler innan ritkoden flyttas till produktion.
- Håll upprepade mått i namngivna konstanter så att layouten kan skalas senare.
- Separera ändringar av ritstatus, till exempel Brush.Color, från formloopen när utdata behöver förutsägbar stil.
- Föredra fasta exempeldata för automatiserade jämförelsetester.
|
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. |
Vad provet visar
- Hur man initierar THotPDF för en konsolliknande Delphi PDF-genereringsuppgift.
- Hur man använder HotPDF.Canvas för text och grundläggande geometrisk ritning.
- Hur penselfärger påverkar fyllda former i den genererade PDF-filen.
- Hur upprepade koordinater kan skapa skiktad visuell utdata utan bitmappsskärmdumpar.
Implementeringsanteckningar
PDF-sidan slutförs först efter att EndDoc har anropats, så produktionskoden bör behålla försök/slutligen-blocket under komponentens livslängd och undvika att lämna en delvis skriven fil om ritningen misslyckas. För deterministisk testutdata, ersätt Randomize och slumpmässiga färger med fasta färgvärden.
Canvasbaserad PDF-ritning fungerar bäst för rapporter, överlägg, diagram och genererade formulär där utskriften ska förbli skarp på alla zoomnivåer. Om källritningen beror på skärm-DPI eller enhetsspecifika teckensnitt, verifiera den slutliga PDF-filen på ett rent system innan du skickar den.
Valideringschecklista
- Öppna PDF-filen vid flera zoomnivåer och bekräfta att kanterna är rena.
- Skriv ut en testsida om PDF-filen är avsedd för fysiska formulär eller etiketter.
- Kontrollera att varje form ligger inom den avsedda marginalrutan.
- Bekräfta att texten förblir läsbar när Windows ersätter teckensnitt.