このHotPDFコンポーネントのサンプルは、VCLアプリケーションでDelphi開発者が既に使用しているのと同じTCanvasワークフローを使用して、ベクトル形式のPDF描画を作成する方法を示しています。 この例では、PDF出力を別の描画モデルとして扱うのではなく、HotPDF.Canvasを使用してテキストと形状を書き込み、その結果をPDF ドキュメントとして保存します。
このサンプルは、既にTCanvasに基づいて、グラフ、図、プレビュー、またはカスタムコントロールのレンダリングコードを持つアプリケーションに役立ちます。 基本的なパターンはシンプルです。 THotPDFを作成し、出力ファイルを割り当て、BeginDocを呼び出し、キャンバスの状態を設定し、コンテンツを描画し、EndDocでファイルを終了します。
以下のコードでは、描画ループは、同じ座標系を使用する3つのグループの色付きの形状を描画します。 各グループは、描画するプリミティブのみを変更します。これは、作成された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. |
このサンプルで示されている内容
- コンソール形式のDelphi PDF作成タスクでTHotPDFを初期化する方法。
- HotPDF.Canvasを使用して、テキストと基本的な幾何学的描画を行う方法。
- ブラシの色が作成されたPDFにおける塗りつぶされた形状にどのように影響するか。
- 繰り返し座標を使用して、ビットマップスクリーンショットなしで、階層的な視覚的な出力を構築する方法。
実装に関する注意点
PDF ページは、EndDoc が呼び出されるまで確定しないため、本番環境のコードでは、コンポーネントのライフサイクル全体を try/finally ブロックで囲み、描画が失敗した場合に、部分的に書き込まれたファイルが残らないようにする必要があります。決定的なテスト出力のため、Randomize とランダムな色を、固定の色値に置き換えてください。
Canvas ベースの PDF 描画は、レポート、オーバーレイ、図、作成されたフォームに最適で、出力はどのズームレベルでも鮮明に保たれます。ソース描画が画面 DPI またはデバイス固有のフォントに依存している場合は、出荷前に、クリーンなシステムで最終的な PDF を確認してください。