此 HotPDF 组件示例演示了如何使用与 VCL 应用程序中 Delphi 开发人员已经使用的相同 TCanvas 工作流程,创建矢量风格的 PDF 图形。该示例不将 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,以执行基于控制台的 Delphi PDF 生成任务。
- 如何使用 HotPDF.Canvas 进行文本和基本的几何图形绘制。
- 笔刷颜色如何影响生成的 PDF 中填充形状的外观。
- 如何通过重复坐标构建分层视觉输出,而无需位图屏幕截图。
实现说明
PDF 页面的最终化仅在调用 EndDoc 后完成,因此生产代码应在组件的生命周期周围保留 try/finally 块,以避免在绘图失败时留下部分写入的文件。为了获得可预测的测试输出,将 Randomize 和随机颜色替换为固定颜色值。
基于 Canvas 的 PDF 绘图最适合于报告、叠加层、图表和生成的表单,这些输出应在任何缩放级别下保持清晰。如果源绘图依赖于屏幕 DPI 或设备特定的字体,请在发布之前,在干净的系统上验证最终的 PDF 文件。