HotPDF コンポーネント Delphi TextOut サンプル – フォントスタイルと文字セット
この包括的なHotPDF コンポーネント TextOut サンプルは、高度なフォント処理、文字セットサポート、テキストスケーリング、間隔調整、およびレンダリングモードを実演します。このサンプルは、Delphi アプリケーションでの PDF 生成のための詳細なフォントと文字セットのデモンストレーションを実用的な例とともに生成します。
異なるスタイルの Arial、Times New Roman、Courier New を示すフォントファミリーのデモンストレーション
高度なテキスト書式設定:スケーリング、文字/単語間隔、レンダリングモード
実演される主要機能
- フォントファミリーサポート: 様々なスタイルの Arial、Times New Roman、Courier New
- 文字セット処理: アラビア語、東欧、OEM、ロシア語、トルコ語文字セット
- テキストスケーリング: 水平テキスト圧縮と拡張
- 文字間隔: 読みやすさ向上のための文字間隔の微調整
- 単語間隔: より良いテキストレイアウトのための単語間のスペース調整
- レンダリングモード: 塗りつぶし、ストローク、塗りつぶし+ストローク、非表示テキストレンダリング
📝 重要な注意
ShowCharset は、文字コードを通じて文字セットから文字を表示することを技術的に実演するためにのみ使用されます。通常のテキスト表示では、文字コードを指定する必要なく、TextOut を使用して希望する文字列を直接表示できます。
このサンプルの ShowCharset プロシージャは、異なる文字エンコーディングが Unicode/ASCII コードによって個々の文字をどのようにレンダリングするかを具体的に示すために設計されています。実際のアプリケーションでは、テキスト文字列で直接 TextOut メソッドを使用するだけです。
技術的実装
このサンプルは、以下を含む HotPDF コンポーネントの包括的なテキスト出力機能を紹介します:
- クロスプラットフォーム表示の一貫性のためのフォント埋め込み
- 国際テキストのための Unicode 文字サポート
- 高度なテキスト配置と回転
- ナビゲーションのための 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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 | {***************************************************************} // HotPDF PDF コンポーネント - テキストスタイルと文字セットのデモンストレーション // Copyright(c)2007-2025, https://www.loslab.com {***************************************************************} program TextOut; {$APPTYPE CONSOLE} {$I ..\..\..\Lib\HotPDF.inc} uses {$IFDEF XE2+} WinApi.Windows, System.SysUtils, System.Classes, Vcl.Graphics, {$ELSE} Windows, SysUtils, Classes, Graphics, {$ENDIF} HPDFDoc; // PDF ドキュメントとアウトライン管理のためのグローバル変数 var HotPDF: THotPDF; // メイン HotPDF コンポーネントインスタンス OutlineRoot: THPDFDocOutlineObject; // ドキュメントナビゲーション用のルートアウトラインオブジェクト CurrnetOutline: THPDFDocOutlineObject; // ネストした構造用の現在のアウトラインオブジェクト { ==================================================================== ShowFontGroup - 異なるスタイルでフォントファミリーを表示 ==================================================================== 目的: 同じフォントを異なるスタイル(通常、太字、斜体、太字斜体)で 様々なテキスト回転角度で表示する方法を実演します。 パラメータ: @param FontGroup: String - 表示するフォントファミリー名(例:'Arial') @param Position: Integer - テキスト配置のX座標 機能: 1. ベース位置でフォント名を通常スタイルで表示 2. 正の回転(+1度)で太字版を表示 3. 負の回転(-1度)で斜体版を表示 4. 通常の向きで太字斜体の組み合わせを表示 レイアウト: 各フォントスタイルは前のものより20ピクセル下に表示されます } procedure ShowFontGroup(FontGroup: AnsiString; Position: Integer); begin // procedure SetFont ( FontName: AnsiString; FontStyle: TFontStyles; ASize: Single; FontCharset: TFontCharset; IsVertiacal: Boolean); // 通常のフォントスタイルを表示 HotPDF.CurrentPage.SetFont(FontGroup, [], 12); // スタイル修飾子なしでフォントを設定 // procedure TextOut ( X, Y: Single; Angle: Extended; Text: WideString); HotPDF.CurrentPage.TextOut(Position, 70, 0, WideString(FontGroup)); // ベースY位置(70)で表示 // わずかな正の回転で太字フォントスタイルを表示 HotPDF.CurrentPage.SetFont(FontGroup, [fsBold], 12); // 太字スタイルを適用 HotPDF.CurrentPage.TextOut(Position, 90, 1, WideString(FontGroup + '-Bold')); // +1度回転、Y+20 // わずかな負の回転で斜体フォントスタイルを表示 HotPDF.CurrentPage.SetFont(FontGroup, [fsItalic], 12); // 斜体スタイルを適用 HotPDF.CurrentPage.TextOut(Position, 110, - 1, WideString(FontGroup + '-Italic')); // -1度回転、Y+40 // 回転なしで太字斜体の組み合わせを表示 HotPDF.CurrentPage.SetFont(FontGroup, [fsBold, fsItalic], 12); // 太字と斜体の両方を適用 HotPDF.CurrentPage.TextOut(Position, 130, 0, WideString(FontGroup + '-Bold-Italic')); // 通常の向き、Y+60 end; { ==================================================================== ShowCharset - 特定の文字セットの文字を表示 ==================================================================== 目的: 異なる文字エンコーディングの適切な文字表示を実演 パラメータ: @param FontCharset: TFontCharset - Windows 文字セット識別子 @param First: Integer - 開始 Unicode/ASCII 文字コード @param Last: Integer - 終了 Unicode/ASCII 文字コード(含む) @param Y1: Integer - 文字セット名表示のY座標 @param Y2: Integer - 文字グリッド表示のY座標 文字範囲: 各文字セットは特定の Unicode/ASCII 範囲から文字を表示します: - ARABIC_CHARSET: Unicode 1536-1625(アラビア語ブロック文字) - EASTEUROPE_CHARSET: Unicode 160-249(Latin-1 補助) - OEM_CHARSET: ASCII 32-121(印刷可能ASCII文字) - RUSSIAN_CHARSET: Unicode 1024-1113(キリル文字ブロック文字) - TURKISH_CHARSET: Unicode 161-255(印刷可能Latin拡張) 表示レイアウト: 文字は1行30文字で3行に配置されます: - 行1:文字0-29、X=50から開始 - 行2:文字30-59、X=50から開始、Y+20 - 行3:文字60-89、X=50から開始、Y+40 - 文字間隔:水平16ピクセル、垂直20ピクセル } procedure ShowCharset(FontCharset: TFontCharset; First, Last: Integer; Y1, Y2: Integer); var i: Integer; // 文字反復用のループカウンタ CSName: AnsiString; // 表示用の文字セット名 XPos, YPos: Integer; // 位置変数 CharCode: Integer; // 表示する文字コード CharCount: Integer; // 表示する文字数 Row: Integer; // 現在の行(1、2、または3) CharInRow: Integer; // 現在の行内の文字位置 begin // 説明的な名前での文字セット設定 case FontCharset of ARABIC_CHARSET: CSName := 'ARABIC_CHARSET'; EASTEUROPE_CHARSET: CSName := 'EASTEUROPE_CHARSET'; OEM_CHARSET: CSName := 'OEM_CHARSET'; RUSSIAN_CHARSET: CSName := 'RUSSIAN_CHARSET'; TURKISH_CHARSET: CSName := 'TURKISH_CHARSET'; else CSName := 'DEFAULT_CHARSET'; end; // 90文字を表示するように文字数を設定(1行30文字×3行) CharCount := 90; if Last - First + 1 < CharCount then CharCount := Last - First + 1; // 文字セットヘッダーを表示 HotPDF.CurrentPage.SetFont('Arial', [fsBold, fsItalic], 12); HotPDF.CurrentPage.TextOut(50, Y1, 0, WideString(CSName + ' example: ')); // 文字セット指定で文字表示用の適切なフォントを設定 HotPDF.CurrentPage.SetFont('Arial', [], 14, FontCharset); // インデントなしで3行レイアウトで文字を表示 for i := 0 to CharCount - 1 do begin // 行と行内の位置を決定 if i < 30 then begin // 第1行:30文字、タイトルと揃える(x=50) Row := 1; CharInRow := i; XPos := 50 + CharInRow * 16; YPos := Y2; end else if i < 60 then begin // 第2行:30文字、タイトルと揃える(x=50) Row := 2; CharInRow := i - 30; XPos := 50 + CharInRow * 16; YPos := Y2 + 20; // 第1行より20ピクセル下 end else begin // 第3行:残りの文字、タイトルと揃える(x=50) Row := 3; CharInRow := i - 60; XPos := 50 + CharInRow * 16; YPos := Y2 + 40; // 第1行より40ピクセル下 end; // 文字コードを計算 CharCode := First + i; try // すべての文字にWideString変換を使用 HotPDF.CurrentPage.TextOut(XPos, YPos, 0, WideString(WideChar(CharCode))); except // エラーが発生した場合、フォールバック文字を表示 HotPDF.CurrentPage.TextOut(XPos, YPos, 0, WideString('?')); end; end; end; { ==================================================================== ShowTable - デモンストレーション用のテーブル構造を描画 ==================================================================== 目的: テキスト書式設定効果を実演するための簡単なテーブル構造を作成します。 テキストスケーリング、文字間隔、単語間隔セクションで使用されます。 パラメータ: @param X: Integer - 左端のX座標 @param Y: Integer - 上端のY座標 構造: 300x100ピクセルのテーブルを作成し、以下に分割: - 上部セル:300x50ピクセル - 下部セル:300x50ピクセル - 垂直分割線:左端から130ピクセル すべての線は可視性のためストローク操作で描画されます } procedure ShowTable(X, Y: Integer); begin // 上部テーブルセルを描画(300x50の矩形) HotPDF.CurrentPage.Rectangle(X, Y, 300, 50); HotPDF.CurrentPage.Stroke; // 下部テーブルセルを描画(300x50の矩形、50ピクセル下にオフセット) HotPDF.CurrentPage.Rectangle(X, Y + 50, 300, 50); HotPDF.CurrentPage.Stroke; // 両方のセルを通る垂直分割線を描画 HotPDF.CurrentPage.MoveTo(X + 130, Y); // 上部セルの上から開始 HotPDF.CurrentPage.LineTo(X + 130, Y + 100); // 下部セルの下まで描画 HotPDF.CurrentPage.Stroke; end; { ==================================================================== メインプログラム実行 ==================================================================== これは、すべての HotPDF テキスト出力機能を実演するメインプログラム本体です。 プログラムはセクションに構造化されており、各セクションはテキスト処理の 特定の側面を実演します: 1. フォントグループ - 異なるフォントファミリーとスタイルを表示 2. 文字セット - 文字エンコーディング処理を実演 3. テキストスケーリング - 水平テキストスケーリング効果を表示 4. 文字間隔 - 文字間隔調整を実演 5. 単語間隔 - 単語間隔修正を表示 6. レンダリングモード - 異なるテキストレンダリング効果を表示 各セクションには適切なヘッダー、ナビゲーションアウトライン、 および該当する場合は前後比較を含む実用的な例が含まれています。 } begin // HotPDF コンポーネントを初期化 HotPDF := THotPDF.Create(nil); try // 最適なテキスト表示のためのPDFドキュメントプロパティを設定 HotPDF.AutoLaunch := true; // 作成後にPDFを自動的に開く HotPDF.FontEmbedding := true; // システム間での一貫した文字表示のためのフォント埋め込みを有効化 HotPDF.StandardFontEmulation := false; // 文字マッピング問題を防ぐためフォントエミュレーションを無効化 HotPDF.FileName := 'TextOut.pdf'; // 出力ファイル名を設定 HotPDF.PageLayout := plOneColumn; // ビューアを1列表示に設定 // PDF ドキュメント作成を開始 HotPDF.BeginDoc(true); // 圧縮を有効にしてPDFを作成 OutlineRoot := HotPDF.OutlineRoot; // ドキュメントアウトラインナビゲーションを初期化 // ==================================================================== // セクション1:フォントグループのデモンストレーション // ==================================================================== // このセクションは、異なるフォントファミリーが様々なスタイルの組み合わせ // (通常、太字、斜体、太字斜体)でどのように表示されるかを実演します // 強化された書式設定でセクションヘッダーを作成 HotPDF.CurrentPage.SetFont('Arial', [fsBold, fsUnderline], 20); HotPDF.CurrentPage.TextOut(195, 30, 0, WideString('フォント表示')); // このセクションのナビゲーションアウトラインエントリを追加 OutlineRoot.AddChild('フォント表示', 195, 30); // 座標にリンク // システム間で一般的に利用可能な3つの主要フォントファミリーを表示 ShowFontGroup('Arial', 50); // X=50でサンセリフフォント ShowFontGroup('Times New Roman', 180); // X=180でセリフフォント ShowFontGroup('Courier New', 350); // X=350で等幅フォント // ==================================================================== // セクション2:文字セットのデモンストレーション // ==================================================================== // このセクションは、異なるWindows文字エンコーディングの適切な処理を実演します // セクションヘッダーを作成 HotPDF.CurrentPage.SetFont('Arial', [fsBold, fsUnderline], 20); HotPDF.CurrentPage.TextOut(200, 170, 0, WideString('文字セット')); // 展開可能な構造で文字セットのアウトライングループを作成 // OutlineRoot.AddChild: PDFナビゲーションツリーに新しいブックマーク/アウトラインエントリを作成 // パラメータ:('タイトル', X座標, Y座標) // - '文字セット': PDFアウトライン/ブックマークパネルに表示されるテキスト // - 250: X座標(水平位置)クリック時にナビゲートする場所 // - 170: Y座標(垂直位置)クリック時にナビゲートする場所 CurrnetOutline := OutlineRoot.AddChild('文字セット', 250, 170); CurrnetOutline.Opened := true; // デフォルトでこのアウトラインセクションを展開 CurrnetOutline.AddChild('ARABIC_CHARSET', 50, 225); // アラビア語文字セット:Unicode範囲 U+0600-U+0659(90文字) // 範囲:1536-1625(文字、句読点、数字、発音記号を含むアラビア語ブロック) // 各行30文字で3行に90のアラビア語文字を表示 // 用途:アラビア語、ペルシア語、ウルドゥー語、パシュトー語、クルド語、その他のRTLスクリプト // procedure ShowCharset(FontCharset: TFontCharset; First, Last: Integer; Y1, Y2: Integer); // First は最初の文字のコード、Last 文字まで順次出力 // Y1 はタイトルのY座標、Y2 は開始文字のY座標 ShowCharset(ARABIC_CHARSET, 1536, 1625, 225, 250); CurrnetOutline.AddChild('EASTEUROPE_CHARSET', 50, 325); // 東欧文字セット:Unicode範囲 U+00A0-U+00F9(90文字) // 範囲:160-249(アクセント付き文字と記号を含むLatin-1補助) // 各行30文字で3行に90の拡張ラテン文字を表示 // 用途:フランス語、ドイツ語、スペイン語、ポルトガル語、イタリア語、オランダ語、北欧言語 // ShowCharset は文字コードを通じて文字セットから文字の表示を実演するためのものです // 通常のテキスト表示では、TextOut を使用して必要な文字列を直接表示するだけです ShowCharset(EASTEUROPE_CHARSET, 160, 249, 325, 350); CurrnetOutline.AddChild('OEM_CHARSET', 50, 425); // OEM文字セット:ASCII範囲 32-121(90文字) // 範囲:32-121(スペース、記号、数字、文字を含む印刷可能ASCII) // 各行30文字で3行に90のASCII文字を表示 // 用途:DOSアプリケーション、コンソール出力、レガシーシステム ShowCharset(OEM_CHARSET, 32, 121, 425, 450); CurrnetOutline.AddChild('RUSSIAN_CHARSET', 50, 525); // ロシア語文字セット:Unicode範囲 U+0400-U+0459(90文字) // 範囲:1024-1113(ロシア語、ウクライナ語、ブルガリア語文字を含むキリル文字ブロック) // 各行30文字で3行に90のキリル文字を表示 // 用途:ロシア語、ブルガリア語、セルビア語(キリル文字)、マケドニア語、ウクライナ語、ベラルーシ語 ShowCharset(RUSSIAN_CHARSET, 1024, 1113, 525, 550); CurrnetOutline.AddChild('TURKISH_CHARSET', 50, 625); // トルコ語文字セット:Unicode範囲 U+00A1-U+00FF(95文字) // 範囲:161-255(制御文字128-160を避けた印刷可能Latin-1補助) // 各行30文字で3行に90文字を表示(利用可能な95文字の最初の90文字) // トルコ語特殊文字を含む:Ç(199), ç(231), Ğ(208), ğ(240), İ(221), ı(253), Ö(214), ö(246), Ş(222), ş(254), Ü(220), ü(252) // 用途:独特の文字とヨーロッパ記号を持つトルコ語 ShowCharset(TURKISH_CHARSET, 161, 255, 625, 650); // ==================================================================== // セクション3:テキストスケーリングのデモンストレーション // ==================================================================== // このセクションは、水平テキストスケーリングがテキストの外観にどのように影響するかを示します // スケーリングは高さを維持しながら文字の幅を変更します // 高度なテキスト書式設定デモンストレーション用の新しいページを開始 HotPDF.AddPage; HotPDF.CurrentPage.SetFont('Arial', [fsBold, fsUnderline], 20); OutlineRoot.AddChild('水平テキストスケーリング', 180, 40); // メインアウトラインナビゲーションに追加 HotPDF.CurrentPage.TextOut(180, 40, 0, WideString('水平テキストスケーリング')); // 比較テーブル構造を作成 ShowTable(130, 80); // 比較用の説明ラベルを追加 HotPDF.CurrentPage.SetFont('Times New Roman', [], 12); HotPDF.CurrentPage.TextOut(160, 100, 0, WideString('デフォルト 100')); // 通常スケーリングラベル HotPDF.CurrentPage.TextOut(165, 145, 0, WideString('50に設定')); // 圧縮スケーリングラベル // 通常のテキストスケーリング(100% - デフォルト)を実演 HotPDF.CurrentPage.SetFont('Times New Roman', [], 24); HotPDF.CurrentPage.TextOut(280, 95, 0, WideString('単語')); // 圧縮されたテキストスケーリング(50%幅)を実演 HotPDF.CurrentPage.SetHorizontalScaling(50); // テキストを50%幅に圧縮 HotPDF.CurrentPage.TextOut(285, 140, 0, WideString('単語')); HotPDF.CurrentPage.SetHorizontalScaling(100); // 通常スケーリングにリセット // ==================================================================== // セクション4:文字間隔のデモンストレーション // ==================================================================== // このセクションは、文字間隔がテキストの読みやすさにどのように影響するかを実演します // 文字間隔は個々の文字間に均一なスペースを追加します HotPDF.CurrentPage.SetFont('Arial', [fsBold, fsUnderline], 20); OutlineRoot.AddChild('文字間隔', 200, 220); HotPDF.CurrentPage.TextOut(200, 220, 0, WideString('文字間隔')); // 比較テーブルを作成 ShowTable(130, 260); // 説明ラベルを追加 HotPDF.CurrentPage.SetFont('Times New Roman', [], 12); HotPDF.CurrentPage.TextOut(162, 280, 0, WideString('デフォルト 0')); // 通常間隔ラベル HotPDF.CurrentPage.TextOut(162, 330, 0, WideString('間隔 5 に設定')); // 拡張間隔ラベル // 通常の文字間隔(0 - デフォルト)を実演 HotPDF.CurrentPage.SetFont('Times New Roman', [], 24); HotPDF.CurrentPage.TextOut(278, 275, 0, WideString('文字')); // 拡張された文字間隔(文字間+5単位)を実演 HotPDF.CurrentPage.SetCharacterSpacing(5); // 各文字間に5単位を追加 HotPDF.CurrentPage.TextOut(278, 320, 0, WideString('文字')); HotPDF.CurrentPage.SetCharacterSpacing(0); // 通常間隔にリセット // ==================================================================== // セクション5:単語間隔のデモンストレーション // ==================================================================== // このセクションは、単語間隔がテキストレイアウトにどのように影響するかを実演します // 単語間隔は単語間(スペース文字で)に特別にスペースを追加します HotPDF.CurrentPage.SetFont('Arial', [fsBold, fsUnderline], 20); OutlineRoot.AddChild('単語間隔', 200, 380); HotPDF.CurrentPage.TextOut(200, 380, 0, WideString('単語間隔')); // 比較テーブルを作成 ShowTable(130, 420); // 説明ラベルを追加 HotPDF.CurrentPage.SetFont('Times New Roman', [], 12); HotPDF.CurrentPage.TextOut(162, 440, 0, WideString('デフォルト 0')); // 通常単語間隔ラベル HotPDF.CurrentPage.TextOut(162, 490, 0, WideString('間隔 10 に設定')); // 拡張単語間隔ラベル // 通常の単語間隔(0 - デフォルト)を実演 HotPDF.CurrentPage.SetFont('Times New Roman', [], 24); HotPDF.CurrentPage.TextOut(280, 430, 0, WideString('単語 間隔')); // 拡張された単語間隔(単語間+10単位)を実演 HotPDF.CurrentPage.SetWordSpacing(10); // 単語間に10単位を追加 HotPDF.CurrentPage.TextOut(280, 480, 0, WideString('単語 間隔')); HotPDF.CurrentPage.SetWordSpacing(0); // 通常間隔にリセット // ==================================================================== // セクション6:テキストレンダリングモードのデモンストレーション // ==================================================================== // このセクションは、PDFで利用可能な異なるテキストレンダリング効果を実演します // テキストは塗りつぶし、ストローク、両方、または非表示(高度な効果用)にできます HotPDF.CurrentPage.SetFont('Arial', [fsBold, fsUnderline], 20); OutlineRoot.AddChild('レンダリングモード', 200, 550); HotPDF.CurrentPage.TextOut(200, 550, 0, WideString('レンダリングモード')); // レンダリングモード比較用の複雑なテーブル構造を作成 // メインテーブルアウトライン(500x150ピクセル) HotPDF.CurrentPage.Rectangle(50, 600, 500, 150); HotPDF.CurrentPage.Stroke; // 等幅の4列を作成する垂直分割線 HotPDF.CurrentPage.MoveTo(175, 600); // 第1分割線 HotPDF.CurrentPage.LineTo(175, 750); HotPDF.CurrentPage.Stroke; HotPDF.CurrentPage.MoveTo(300, 600); // 第2分割線 HotPDF.CurrentPage.LineTo(300, 750); HotPDF.CurrentPage.Stroke; HotPDF.CurrentPage.MoveTo(425, 600); // 第3分割線 HotPDF.CurrentPage.LineTo(425, 750); HotPDF.CurrentPage.Stroke; // ヘッダーをコンテンツから分離する水平分割線 HotPDF.CurrentPage.MoveTo(50, 665); HotPDF.CurrentPage.LineTo(550, 665); HotPDF.CurrentPage.Stroke; // 各レンダリングモードを説明する列ヘッダーを追加 HotPDF.CurrentPage.SetFont('Arial', [], 12); HotPDF.CurrentPage.TextOut(100, 620, 0, WideString('塗りつぶし')); // 塗りつぶしモード - 単色テキスト HotPDF.CurrentPage.TextOut(215, 620, 0, WideString('ストローク')); // ストロークモード - アウトラインテキスト HotPDF.CurrentPage.TextOut(320, 620, 0, WideString('塗り+ストローク')); // 組み合わせモード - アウトライン付き塗りつぶし HotPDF.CurrentPage.TextOut(465, 620, 0, WideString('非表示')); // 非表示モード - 特殊効果用 // 劇的なレンダリング効果デモンストレーション用の色を設定 HotPDF.CurrentPage.SetFont('Arial', [fsBold], 72); // 明確な可視性のための大きなフォント HotPDF.CurrentPage.SetRGBStrokeColor(clRed); // 赤いアウトライン色 HotPDF.CurrentPage.SetRGBFillColor(clYellow); // 黄色の塗りつぶし色 // 塗りつぶしレンダリングモードを実演 - 単色テキスト HotPDF.CurrentPage.SetTextRenderingMode(trFill); HotPDF.CurrentPage.TextOut(90, 670, 0, WideString('P')); // ストロークレンダリングモードを実演 - アウトラインテキストのみ HotPDF.CurrentPage.SetTextRenderingMode(trStroke); HotPDF.CurrentPage.TextOut(215, 670, 0, WideString('D')); // 塗りつぶし+ストロークレンダリングモードを実演 - 色付きアウトライン付き塗りつぶしテキスト HotPDF.CurrentPage.SetTextRenderingMode(trFillThenStroke); HotPDF.CurrentPage.TextOut(340, 670, 0, WideString('F')); // 非表示レンダリングモードを実演 - テキストは存在するが見えない // (画像上の検索可能テキストや高度なレイアウト技術に有用) HotPDF.CurrentPage.SetTextRenderingMode(trInvisible); HotPDF.CurrentPage.TextOut(475, 670, 0, WideString('X')); // 後続のテキストのためにデフォルトレンダリングモードにリセット HotPDF.CurrentPage.SetTextRenderingMode(trFillThenStroke); // PDFドキュメントを完成させて保存 HotPDF.EndDoc; finally // HotPDFコンポーネントの適切なクリーンアップを確保 HotPDF.Free; end; end. |
Discover more from losLab Software Development
Subscribe to get the latest posts sent to your email.