HotPDF Delphiコンポーネント:PDFドキュメントでの垂直テキストレイアウトの作成
この包括的なガイドでは、 HotPDFコンポーネントが 開発者が簡単にPDFドキュメントでUnicodeの垂直テキストを作成する方法を示します。
垂直組版(縦書き/세로쓰기/竖排)の理解
垂直組版、別名 垂直書き縦書(tategaki)は、2000年以上前の古代中国で生まれた伝統的なテキストレイアウト方法です。この書記体系は、上から下へ、右から左へ書かれるため、独特の視覚的な特徴を持ち、深い文化的意味合いがあります。
歴史的および文化的背景。
縦書きの書字システムは、東アジアの文学や文書において重要な役割を果たしてきました。
- 中国伝統的な中国語のテキスト、古典詩、そして書道は、主に縦書きでした。現代の簡体字中国語は主に横書きですが、縦書きは芸術的および儀式的な文脈で依然として一般的です。
- 日本。日本語は、縦書き(tategaki)と横書き(yokogaki)の両方の表記体系を利用します。縦書きは、小説、漫画、新聞、伝統的な文書などで今でも広く利用されています。
- 韓国。歴史的には縦書きが利用されていましたが、現代の韓国語(ハングル)では主に横書きが用いられます。縦書きは伝統的な文脈や芸術的な用途で見られます。
- ベトナム: 伝統的なベトナム語のテキストは、漢字(Chữ Hán)で書かれる際に、縦書きのレイアウトが利用されていましたが、ラテン文字の採用により、この方法はほとんど廃止されました。
縦書きテキストの現代的な応用
グローバルな水平書きの傾向があるにもかかわらず、縦書きのレイアウトは、いくつかの文脈において依然として重要です。
- 出版: 台湾、日本、香港における、伝統的な小説、詩集、文学作品
- デザイン: ロゴ、標識、視覚的なインパクトが必要な芸術的なレイアウト
- デジタルメディア: 電子書籍、モバイルアプリケーション、および従来の読書好みに合わせたウェブコンテンツ
- ドキュメント: 法律文書、証明書、および従来の形式での正式なコミュニケーション
HotPDFコンポーネント:プロフェッショナルな縦書きテキストサポート
The HotPDF Delphiコンポーネント HotPDFコンポーネントは、PDFドキュメントにおける縦書きテキストレイアウトを包括的にサポートしており、多言語アプリケーションや従来のドキュメント形式で作業する開発者にとって理想的なソリューションです。
縦書きタイポグラフィの主な機能
- ✅ Unicodeサポート: CJK(中国語、日本語、韓国語)文字セットとの完全な互換性
- ✅ フォントの埋め込み: 異なるシステムでも一貫した表示を保ちます。
- ✅ 混在レイアウト: 横書きと縦書きのテキストを同じドキュメント内で組み合わせます。
- ✅ 正確な配置: テキスト位置をピクセル単位で正確に制御します。
- ✅ : 多语言サポート。: 処理複雑的脚本和文字组合。

実装ガイド:Delphiコード例
以下の詳細なDelphiコード例は、HotPDFコンポーネントを利用して垂直テキスト描画を実装する方法を示しています。この例では、複数の言語を利用した水平および垂直テキストレイアウトの両方を示しています。
コードの主な機能
- : フォント設定: 複数言語サポートのためのUnicodeフォントの適切な設定
- テキストの配置: 垂直レイアウトにおけるテキストの配置を正確に制御
- 言語の組み合わせ: 同じドキュメント内で異なる書記体系(ラテン文字、CJK)を組み合わせる
- 资源管理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 |
{***********************************************************} // HotPDF PDF Component // Copyright(c)2007-2025, https://www.loslab.com {***********************************************************} { Unit: uVerticalText Purpose: Demonstrates vertical text output capabilities in HotPDF Features: - Horizontal and vertical text rendering - Multi-language support (English, Korean, Japanese, Chinese) - Unicode character handling - Font embedding for proper display } unit uVerticalText; interface {$I ..\..\..\Lib\HotPDF.inc} uses {$IFDEF XE2+} WinApi.Windows, WinApi.Messages, System.SysUtils, System.Classes, Vcl.Graphics, Vcl.StdCtrls, Vcl.Controls, Vcl.Dialogs, Vcl.Forms, {$ELSE} Windows, Messages, SysUtils, Graphics, Controls, StdCtrls, Classes, Dialogs, Forms, {$ENDIF} HPDFDoc; // HotPDF component for PDF generation type // Main form class for the vertical text demonstration TForm1 = class(TForm) Button1: TButton; // Button to trigger PDF generation procedure Button1Click(Sender: TObject); private {Private declarations} public {Public declarations} end; var Form1: TForm1; // Main form instance HotPDF: THotPDF; // HotPDF component instance implementation {$R *.DFM} // Important Note: Old version of Delphi cannot handle Unicode characters correctly. // You need Delphi 2009 or above to open this file. { Method: Button1Click Purpose: Demonstrates vertical and horizontal text output with multiple languages Parameters: Sender - The object that triggered the event Features: - Creates a PDF with both horizontal and vertical text - Shows text in multiple languages (English, Korean, Japanese, Chinese) - Uses Unicode font for proper character display - Demonstrates different text positioning techniques } procedure TForm1.Button1Click(Sender: TObject); begin // Create HotPDF instance HotPDF := THotPDF.Create(nil); try // Configure PDF generation settings HotPDF.AutoLaunch := true; // Automatically open PDF after creation HotPDF.FontEmbedding := true; // Embed fonts for proper display HotPDF.FileName := 'VerticalText.pdf'; // Set output filename // Begin PDF document creation HotPDF.BeginDoc; HotPDF.CurrentPage.Size := psA4; // Set page size to A4 // === HORIZONTAL TEXT DEMONSTRATION === HotPDF.CurrentPage.SetFont('Arial Unicode MS', [], 12, 0, False); // Set horizontal text mode // Output horizontal text in multiple languages HotPDF.CurrentPage.TextOut(80, 70, 0, 'Horizontal Text 가로텍스트 가로쓰기 横向きのテキスト 横書き 横向文本 横書'); // Add decorative separator line HotPDF.CurrentPage.TextOut(40, 110, 0, '※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※'); // === VERTICAL TEXT DEMONSTRATION === HotPDF.CurrentPage.SetFont('Arial Unicode MS', [], 12, 0, true); // Set vertical text mode // Mixed language vertical text (Korean, Japanese) HotPDF.CurrentPage.TextOut(530, 180, 0, '縦書 縦書き 세로쓰기 垂直テキスト 수직 텍스트'); // Chinese text - Declaration of Independence excerpt HotPDF.CurrentPage.SetFont('Arial Unicode MS', [], 12, 0, true); HotPDF.CurrentPage.TextOut(500, 180, 0, '『我等之见解为,下述真理不证自明:凡人生而平等,秉造物者之赐,'); HotPDF.CurrentPage.TextOut(470, 180, 0, '拥诸无可转让之权利,包含生命权、自由权、与追寻幸福之权。』'); // Japanese text - Traditional poetry HotPDF.CurrentPage.TextOut(430, 180, 0, '昨日またかくてありけり、今日もまたかくてありなむ'); HotPDF.CurrentPage.TextOut(400, 180, 0, 'この命にを齷齪、明日をのみ思ひわづらふ'); HotPDF.CurrentPage.TextOut(370, 180, 0, 'いくたびか栄枯の夢の、消え残る谷に下りて'); HotPDF.CurrentPage.TextOut(340, 180, 0, '河波のいざよふ見れば、砂まじり水巻き帰る'); HotPDF.CurrentPage.TextOut(310, 180, 0, '嗚呼古城なにをか語り、岸の波なにをか答ふ、過し世を静かに思へ'); // Chinese classical poetry - Li Bai's poem HotPDF.CurrentPage.TextOut(270, 180, 0, '棄我去者昨日之日不可留,亂我心者今日之日多煩憂。'); HotPDF.CurrentPage.TextOut(240, 180, 0, '長風萬里送秋鴈,對此可以酣高樓。蓬萊文章建安骨,中間小謝又清發'); HotPDF.CurrentPage.TextOut(210, 180, 0, '俱懷逸興壯思飛,欲上青天攬明月。抽刀斷水水更流,舉杯消愁愁更愁'); HotPDF.CurrentPage.TextOut(180, 180, 0, '人生在世不稱意。明朝散髮弄扁舟。'); // Korean text - Contemporary poetry // Note: Using Arial Unicode MS instead of Malgun Gothic for compatibility //HotPDF.CurrentPage.SetFont('Malgun Gothic', [], 12, 0, true); // Alternative Korean font HotPDF.CurrentPage.TextOut(140, 180, 0, '눈 맞으며 어둠 속을 떨며 가는 사람들을트、노래가 길이 되어 앞질러 가고'); HotPDF.CurrentPage.TextOut(110, 180, 0, '돌아올 길 없는 눈길 앞질러 가고'); HotPDF.CurrentPage.TextOut(80, 180, 0, '아름다움이 이 세상을 건질 때까지'); HotPDF.CurrentPage.TextOut(50, 180, 0, '절망에서 즐거움이 찾아올 때까지'); // === FOOTER DECORATION === HotPDF.CurrentPage.SetFont('Arial Unicode MS', [], 12, 0, False); // Switch back to horizontal text // Add decorative footer line HotPDF.CurrentPage.TextOut(40, 720, 0, '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■'); // Finalize PDF document HotPDF.EndDoc; finally // Clean up resources HotPDF.Free; end; end; end. |
技術実装の詳細。
フォントの選択とUnicodeサポート
PDFで縦書きテキストを扱う場合、正しい文字表示を確保するために、適切なフォントの選択が重要です。
- Arial Unicode MSほとんどのCJK文字をサポートする包括的なUnicodeフォント
- フォントの埋め込み常に有効にする
FontEmbedding := true一貫した表示を確保するために - 文字エンコード。Unicode文字の適切な処理のために、UTF-8エンコーディングを利用する。
テキスト配置に関するベストプラクティス
垂直テキスト配置では、読みやすさと文字間隔を慎重に考慮する必要があります。
- 右から左への列の配置: 右端から開始し、以降の列は左に配置します。
- 上から下の文字の配置: 各列内の文字は、上から下に配置されます。
- 一貫した間隔: プロフェッショナルな外観のために、列の間隔を一貫して保ちます。
- 混用脚本的処理: 混合利用拉丁文和CJK文字时、してください考虑異なる的文字宽度。
高度な機能和自定義オプション
性能最適化技巧
- 🚀 一括テキスト操作: 複数のテキスト出力をまとめ、PDF 操作の回数を減らします。
- 🚀 フォントキャッシュ: 可能な限りフォントオブジェクトを再利用して性能を高めます。
- 🚀 メモリ管理HotPDFインスタンスを適切に破棄して、メモリリークを防ぎます。
- 🚀 ストリーム処理大量のドキュメントには、メモリストリームを利用して処理速度を向上させます。
よくある問題のトラブルシューティング
⚠️ よくある問題と解決策
- 文字の欠落選択したフォントが、必要なすべてのUnicode範囲をサポートしていることを確認してください。
- 位置のずれ座標系の理解を確認してください (HotPDFは、左上を原点として利用します)。
- フォントレンダリングの問題: フォント埋め込みを有効にし、適切なUnicodeフォントを利用してください。
- パフォーマンスの問題: テキスト出力の呼び出しを最適化し、ドキュメント構造を考慮してください。
関連リソースと詳細情報
ドキュメントとサポート
- 📚 HotPDFコンポーネントの公式製品ページ
- 📚 losLabブログ – PDF開発チュートリアル
- 📚 Unicode Standard: 国際化アプリケーションにおける文字エンコードの理解
- 📚 PDF Specification: Adobe PDF 进阶定制参考
関連トピック
- 🔗 PDF テキストレンダリング: PDF ドキュメント内の高度な組版技術
- 🔗 多语言 PDF 作成: 複雑なスクリプトと右から左への言語の処理
- 🔗 Delphi Unicode プログラミング: Delphi アプリケーションにおける Unicode 処理のベストプラクティス
- 🔗 アジアのタイポグラフィ: CJK テキストレイアウトの伝統的なアプローチと最新のアプローチ
結論
The HotPDF Delphiコンポーネント 強力な縦書きテキストレイアウトのサポートを提供するため、伝統的なアジアのタイポグラフィを利用する開発者や、縦書きテキストが必要な最新のデザインアプリケーションにとって最適な選択肢です。 Unicode フォントの適切な実装、慎重な配置、および文化的なタイポグラフィの慣習に注意することで、伝統的な読書パターンを尊重しながら、最新の技術基準を維持したプロフェッショナルな PDF ドキュメントを作成できます。
出版、ドキュメント管理、またはクリエイティブデザインのアプリケーションを開発する場合でも、HotPDF の縦書きテキスト機能を利用すると、文化的により適しており、視覚的に魅力的な PDF ドキュメントを作成でき、多様なグローバルなオーディエンスに対応できます。