html HotPDF Przykładowy projekt komponentu z tekstem pionowym | losLab Software Development Blog

Artykuł techniczny

HotPDF Przykładowy projekt komponentu z tekstem pionowym

· Programowanie PDF

HotPDF Delphi Komponent: Tworzenie pionowych układów tekstu w dokumentach PDF

Ten obszerny przewodnik pokazuje, jak Komponent HotPDF umożliwia programistom łatwe generowanie tekstu pionowego Unicode w dokumentach PDF.

Zrozumienie składu pionowego (縦書き/세로쓰기/竖排)

Skład pionowy, znany również jako pisanie pionowe, 縱書 po chińsku lub tategaki (縦書き) po japońsku to tradycyjna metoda układu tekstu, która powstała w starożytnych Chinach ponad 2000 lat temu. Ten system pisma przepływa od góry do dołu i od prawej do lewej, tworząc charakterystyczny wygląd, który ma głębokie znaczenie kulturowe.

Kontekst historyczny i kulturowy

Pionowe systemy pisma odegrały kluczową rolę w literaturze i dokumentacji Azji Wschodniej:

  • Chiny: Tradycyjne teksty chińskie, poezja klasyczna i kaligrafia wykorzystywały głównie układy pionowe. We współczesnym uproszczonym języku chińskim używa się głównie pisma poziomego, chociaż tekst pionowy pozostaje powszechny w kontekstach artystycznych i ceremonialnych.
  • Japonia: W języku japońskim stosuje się zarówno pionowy (縦書き/tategaki), jak i poziomy (横書き/yokogaki) system pisma. Tekst pionowy jest nadal szeroko stosowany w powieściach, mandze, gazetach i tradycyjnych dokumentach.
  • Korea: W przeszłości pismo pionowe (세로쓰기), ale współczesny język koreański (한글) wykorzystuje głównie układy poziome. Tekst pionowy pojawia się w tradycyjnych kontekstach i zastosowaniach artystycznych.
  • Wietnam: W tradycyjnych tekstach wietnamskich używano układu pionowego, gdy były pisane znakami chińskimi (Chữ Hán), chociaż praktyka ta w dużej mierze zanikła wraz z przyjęciem alfabetu łacińskiego.

Nowoczesne zastosowania tekstu pionowego

Pomimo globalnego trendu w kierunku pisania poziomego, pionowe układy tekstu pozostają istotne w kilku kontekstach:

  • Publikowanie: Tradycyjne powieści, zbiory poezji i dzieła literackie na Tajwanie, w Japonii i Hongkongu
  • Projekt: Logo, oznakowanie i układy artystyczne wymagające efektu wizualnego
  • Media cyfrowe: E-booki, aplikacje mobilne i treści internetowe ukierunkowane na tradycyjne preferencje czytelnicze
  • Dokumentacja: Dokumenty prawne, certyfikaty i formalna komunikacja w tradycyjnych formatach

HotPDF Komponent: Profesjonalna obsługa tekstu pionowego

HotPDF Delphi komponent zapewnia kompleksową obsługę pionowego układu tekstu w dokumentach PDF, co czyni go idealnym rozwiązaniem dla programistów pracujących z aplikacjami wielojęzycznymi lub tradycyjnymi formatami dokumentów.

Kluczowe funkcje typografii pionowej

  • Obsługa Unicode: Pełna kompatybilność z zestawami znaków CJK (chiński, japoński, koreański)
  • Osadzanie czcionek: Zapewnia spójne wyświetlanie w różnych systemach
  • Układy mieszane: Łączenie tekstu poziomego i pionowego w tym samym dokumencie
  • Precyzyjne pozycjonowanie: Doskonała kontrola nad rozmieszczeniem tekstu w pikselach
  • Obsługa wielu języków: Obsługuje złożone skrypty i kombinacje znaków
HotPDF Component generating vertical text in PDF - showing Chinese, Japanese, and Korean characters in traditional vertical layout
Rysunek 1: Dokument PDF z pionowym układem tekstu wygenerowany przez komponent HotPDF, demonstrujący obsługę wielu języków dla typografii pionowej chińskiej (中文), japońskiej (日本語) i koreańskiej (한국어).

Przewodnik wdrożenia: Przykład kodu Delphi

Poniższy kompleksowy przykład kodu Delphi demonstruje, jak zaimplementować pionowe renderowanie tekstu przy użyciu komponentu HotPDF. Ten przykład przedstawia zarówno poziome, jak i pionowe układy tekstu w wielu językach.

Podświetlone funkcje kodu

  • Konfiguracja czcionki: Prawidłowa konfiguracja czcionek Unicode w celu obsługi wielu języków
  • Pozycjonowanie tekstu: Precyzyjna kontrola nad rozmieszczeniem tekstu w układach pionowych
  • Mieszanie języków: Łączenie różnych pism (łac., CJK) w tym samym dokumencie
  • Zarządzanie zasobami: Prawidłowa inicjalizacja i czyszczenie zasobów PDF

Zakreślacz składni Urvanov 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.
[Czas formatowania: 0,0018 sekundy]

Szczegóły techniczne implementacji

Wybór czcionek i obsługa Unicode

Podczas pracy z tekstem pionowym w plikach PDF odpowiedni dobór czcionki ma kluczowe znaczenie dla zapewnienia prawidłowego wyświetlania znaków w różnych językach:

  • Arial Unicode MS: Kompleksowa czcionka Unicode obsługująca większość znaków CJK
  • Osadzanie czcionek: Zawsze włączone FontEmbedding := true , aby zapewnić spójne wyświetlanie
  • Kodowanie znaków: Użyj kodowania UTF-8, aby zapewnić prawidłową obsługę znaków Unicode

Najlepsze praktyki w zakresie pozycjonowania tekstu

Pionowe pozycjonowanie tekstu wymaga dokładnego rozważenia sposobu czytania i odstępów między znakami:

  1. Przepływ kolumny od prawej do lewej: Rozpocznij od skrajnej prawej pozycji i przesuwaj się w lewo, aby przejść do kolejnych kolumn
  2. Przepływ znaków od góry do dołu: Znaki w każdej kolumnie przepływają od góry do dołu
  3. Stałe odstępy: Zachowaj jednolite odstępy między kolumnami, aby uzyskać profesjonalny wygląd
  4. Obsługa skryptów mieszanych: Podczas mieszania alfabetu łacińskiego i CJK należy wziąć pod uwagę różne szerokości znaków

Zaawansowane funkcje i dostosowywanie

Wskazówki dotyczące optymalizacji wydajności

  • 🚀 Wsadowe operacje tekstowe: Grupuj wiele wyników tekstowych, aby zminimalizować operacje PDF
  • 🚀 Buforowanie czcionek: Jeśli to możliwe, używaj ponownie obiektów czcionek, aby poprawić wydajność
  • 🚀 Zarządzanie pamięcią: Prawidłowo usuń instancje HotPDF, aby zapobiec wyciekom pamięci
  • 🚀 Przetwarzanie strumieniowe: Użyj strumieni pamięci w przypadku dużych dokumentów, aby poprawić szybkość przetwarzania

Rozwiązywanie typowych problemów

⚠️ Typowe problemy i rozwiązania

  • Brakujące znaki: Upewnij się, że wybrana czcionka obsługuje wszystkie wymagane zakresy Unicode
  • Nieprawidłowe ustawienie: Sprawdź zrozumienie układu współrzędnych (HotPDF używa początku w lewym górnym rogu)
  • Problemy z renderowaniem czcionek: Włącz osadzanie czcionek i używaj odpowiednich czcionek Unicode
  • Problemy z wydajnością: Optymalizuj wywołania wyjściowe tekstu i uwzględnij strukturę dokumentu

Powiązane zasoby i dalsza lektura

Dokumentacja i wsparcie

Tematy pokrewne

  • 🔗 PDF Renderowanie tekstu: Zaawansowane techniki typograficzne w dokumentach PDF
  • 🔗 Wielojęzyczna generacja PDF: Obsługa złożonych skryptów i języków pisanych od prawej do lewej
  • 🔗 Delphi Programowanie w Unicode: Najlepsze praktyki dotyczące obsługi Unicode w aplikacjach Delphi
  • 🔗 Typografia azjatycka: Tradycyjne i nowoczesne podejście do układu tekstu CJK

Wniosek

HotPDF Delphi komponent zapewnia solidną obsługę pionowych układów tekstu, co czyni go doskonałym wyborem dla programistów pracujących z tradycyjną typografią azjatycką lub nowoczesnymi aplikacjami projektowymi wymagającymi pionowej orientacji tekstu. Dzięki właściwej implementacji czcionek Unicode, starannemu rozmieszczeniu i zwróceniu uwagi na kulturowe konwencje typograficzne, możesz tworzyć profesjonalne dokumenty PDF, które respektują tradycyjne wzorce czytania, zachowując jednocześnie nowoczesne standardy techniczne.

Niezależnie od tego, czy tworzysz aplikacje do publikowania, zarządzania dokumentami czy kreatywnego projektowania, funkcje tekstu pionowego HotPDF umożliwiają tworzenie odpowiednich kulturowo i atrakcyjnych wizualnie dokumentów PDF, które służą zróżnicowanej publiczności na całym świecie.
Schema.org dane strukturalne