HTML'si HotPDF Bileşeni Dikey Metin Örnek Projesi | losLab Software Development Blog

Teknik makale

HotPDF Bileşeni Dikey Metin Örnek Projesi

· PDF Programlama

HotPDF Delphi Bileşeni: PDF Belgelerinde Dikey Metin Düzenleri Oluşturma

Bu kapsamlı kılavuz, HotPDF bileşeni , geliştiricilerin PDF belgelerinde kolaylıkla Unicode dikey metin oluşturmasına olanak tanır.

Dikey Dizgiyi Anlamak (縦書き/세로쓰기/竖排)

Dikey dizgiolarak da bilinir dikey yazı, Çince'de 縱書 veya Japonca'da tategaki (縦書き), kökeni 2000 yıl önce eski Çin'de ortaya çıkan geleneksel bir metin düzenleme yöntemidir. Bu yazı sistemi yukarıdan aşağıya ve sağdan sola doğru akarak derin kültürel önem taşıyan farklı bir görsel görünüm yaratır.

Tarihsel ve Kültürel Bağlam

Dikey yazı sistemleri Doğu Asya edebiyatında ve belgelerinde çok önemli bir rol oynamıştır:

  • Çin: Geleneksel Çin metinleri, klasik şiir ve kaligrafide ağırlıklı olarak dikey düzenler kullanıldı. Modern basitleştirilmiş Çince öncelikle yatay yazı kullanır, ancak dikey metin sanatsal ve törensel bağlamlarda yaygın olarak kalır.
  • Japonya: Japonca hem dikey (縦書き/tategaki) hem de yatay (横書き/yokogaki) yazı sistemlerini korur. Dikey metin hâlâ romanlarda, mangalarda, gazetelerde ve geleneksel belgelerde yaygın olarak kullanılmaktadır.
  • Kore: Tarihsel olarak dikey yazı (세로쓰기) kullanılır, ancak modern Korece (한글) ağırlıklı olarak yatay düzenleri kullanır. Dikey metin, geleneksel bağlamlarda ve sanatsal uygulamalarda karşımıza çıkar.
  • Vietnam: Geleneksel Vietnam metinleri Çince karakterlerle (Chữ Hán) yazıldığında dikey düzenler kullanıyordu, ancak bu uygulama Latin alfabesinin benimsenmesiyle büyük ölçüde ortadan kalktı.

Dikey Metnin Modern Uygulamaları

Yatay yazmaya yönelik küresel eğilime rağmen, dikey metin düzenleri çeşitli bağlamlarda geçerliliğini koruyor:

  • Yayınlanıyor: Tayvan, Japonya ve Hong Kong'daki geleneksel romanlar, şiir koleksiyonları ve edebi eserler
  • Tasarım: Görsel etki gerektiren logolar, tabelalar ve sanatsal düzenler
  • Dijital Medya: Geleneksel okuma tercihlerini hedefleyen e-kitaplar, mobil uygulamalar ve web içeriği
  • Belgeler: Geleneksel formatlardaki yasal belgeler, sertifikalar ve resmi iletişimler

HotPDF Bileşeni: Profesyonel Dikey Metin Desteği

HotPDF Delphi bileşeni , PDF belgelerinde dikey metin düzeni için kapsamlı destek sağlayarak, onu çok dilli uygulamalarla veya geleneksel belge formatlarıyla çalışan geliştiriciler için ideal bir çözüm haline getirir.

Dikey Tipografinin Temel Özellikleri

  • Unicode Desteği: CJK (Çince, Japonca, Korece) karakter kümeleriyle tam uyumluluk
  • Yazı Tipi Gömme: Farklı sistemlerde tutarlı görüntü sağlar
  • Karışık Düzenler: Yatay ve dikey metni aynı belgede birleştirin
  • Hassas Konumlandırma: Metin yerleştirme üzerinde piksel düzeyinde mükemmel kontrol
  • Çoklu Dil Desteği: Karmaşık komut dosyalarını ve karakter kombinasyonlarını yönetin
HotPDF Component generating vertical text in PDF - showing Chinese, Japanese, and Korean characters in traditional vertical layout
Şekil 1: HotPDF Bileşeni tarafından oluşturulan dikey metin düzenine sahip, Çince (中文), Japonca (日本語) ve Korece (한국어) dikey tipografi için çoklu dil desteğini gösteren PDF belgesi.

Uygulama Kılavuzu: Delphi Kodu Örneği

Aşağıdaki kapsamlı Delphi kodu örneği, HotPDF bileşeni kullanılarak dikey metin oluşturmanın nasıl uygulanacağını gösterir. Bu örnekte birden çok dil içeren hem yatay hem de dikey metin düzenleri gösterilmektedir.

Vurgulanan Kod Özellikleri

  • Yazı Tipi Yapılandırması: Çoklu dil desteği için Unicode yazı tiplerinin doğru kurulumu
  • Metin Konumlandırma: Dikey düzenlerde metin yerleşimi üzerinde hassas kontrol
  • Dil Karıştırma: Farklı alfabeleri (Latince, CJK) aynı belgede birleştirme
  • Kaynak Yönetimi: PDF kaynaklarının doğru şekilde başlatılması ve temizlenmesi

Urvanov Sözdizimi Vurgulayıcı v2.9.1
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.
[Format Süresi: 0,0018 saniye]

Teknik Uygulama Detayları

Yazı Tipi Seçimi ve Unicode Desteği

PDF'lerde dikey metinle çalışırken, farklı dillerde doğru karakter gösterimini sağlamak için doğru yazı tipi seçimi çok önemlidir:

  • Arial Unicode MS: Çoğu CJK karakterini destekleyen kapsamlı Unicode yazı tipi
  • Yazı Tipi Gömme: Her zaman etkinleştir Tutarlı görüntü sağlamak için FontEmbedding := true
  • Karakter Kodlaması: Uygun Unicode karakter işleme için UTF-8 kodlamasını kullanın

Metin Konumlandırmaya İlişkin En İyi Uygulamalar

Dikey metin konumlandırma, okuma akışının ve karakter aralığının dikkatli bir şekilde değerlendirilmesini gerektirir:

  1. Sağdan Sola Sütun Akışı: En sağdan başlayın ve sonraki sütunlar için sola gidin
  2. Yukarıdan Aşağıya Karakter Akışı: Her sütundaki karakterler yukarıdan aşağıya doğru akar
  3. Tutarlı Aralık: Profesyonel görünüm için eşit sütun aralığını koruyun
  4. Karışık Komut Dosyası İşleme: Latin ve CJK komut dosyalarını karıştırırken farklı karakter genişliklerini göz önünde bulundurun

Gelişmiş Özellikler ve Özelleştirme

Performans Optimizasyonu İpuçları

  • 🚀 Toplu Metin İşlemleri: PDF işlemlerini en aza indirmek için birden fazla metin çıktısını gruplandırın
  • 🚀 Yazı Tipi Önbelleğe Alma: Performansı artırmak için mümkün olduğunda yazı tipi nesnelerini yeniden kullanın
  • 🚀 Bellek Yönetimi: Bellek sızıntılarını önlemek için HotPDF örneklerini uygun şekilde atın
  • 🚀 Akış İşleme: İşleme hızını artırmak amacıyla büyük belgeler için bellek akışlarını kullanın

Yaygın Sorunları Giderme

⚠️ Yaygın Sorunlar ve Çözümler

  • Eksik Karakterler: Seçilen yazı tipinin gerekli tüm Unicode aralıklarını desteklediğinden emin olun
  • Yanlış Konumlandırma: Koordinat sisteminin anlaşıldığını doğrulayın (HotPDF sol üst orijini kullanır)
  • Yazı Tipi Oluşturma Sorunları: Yazı tipi yerleştirmeyi etkinleştirin ve Uygun Unicode yazı tiplerini kullanın
  • Performans Sorunları: Metin çıktısı çağrılarını optimize edin ve belge yapısını dikkate alın

İlgili Kaynaklar ve Ek Okumalar

Dokümantasyon ve Destek

İlgili Konular

  • 🔗 PDF Metin Oluşturma: PDF belgelerinde gelişmiş tipografi teknikleri
  • 🔗 Çok Dilde PDF Oluşturma: Karmaşık komut dosyalarını ve sağdan sola yazılan dilleri yönetme
  • 🔗 Delphi Unicode Programlama: Delphi uygulamalarında Unicode işlemeye yönelik en iyi uygulamalar
  • 🔗 Asya Tipografisi: CJK metin düzenine geleneksel ve modern yaklaşımlar

Sonuç

HotPDF Delphi bileşeni , dikey metin düzenleri için güçlü bir destek sağlayarak, onu geleneksel Asya tipografisi veya dikey metin yönlendirmesi gerektiren modern tasarım uygulamalarıyla çalışan geliştiriciler için mükemmel bir seçim haline getirir. Unicode yazı tiplerinin doğru şekilde uygulanması, dikkatli konumlandırma ve kültürel tipografi kurallarına dikkat edilmesiyle, modern teknik standartları korurken geleneksel okuma kalıplarına saygı duyan profesyonel PDF belgeleri oluşturabilirsiniz.

Yayıncılık, belge yönetimi veya yaratıcı tasarım için uygulamalar geliştiriyor olsanız da, HotPDF'in dikey metin yetenekleri, çeşitli küresel hedef kitlelere hizmet eden, kültürel açıdan uygun ve görsel olarak çekici PDF belgeleri oluşturmanıza olanak tanır.
Schema.org yapılandırılmış verileri