Articolo tecnico

Progetto di esempio di testo verticale del componente HotPDF

· Programmazione PDF

HotPDF Delphi Component: Creazione di layout di testo verticale in documenti PDF.

Questa guida completa dimostra come il componente HotPDF consente agli sviluppatori di generare facilmente testo verticale Unicode in documenti PDF.

Comprendere la composizione verticale (縦書き/세로쓰기/竖排).

La composizione verticale, nota anche come scrittura verticale.", 纵书" in cinese o "tategaki" (縦書き) in giapponese, è un metodo tradizionale di disposizione del testo che ha avuto origine nell'antica Cina più di 2.000 anni fa. Questo sistema di scrittura scorre dall'alto verso il basso e da destra a sinistra, creando un aspetto visivo distintivo che ha un profondo significato culturale.

Contesto storico e culturale.

I sistemi di scrittura verticale hanno svolto un ruolo cruciale nella letteratura e nella documentazione dell'Asia orientale:

  • Cina.: I testi in cinese tradizionale, la poesia classica e la calligrafia utilizzavano principalmente disposizioni verticali. Il cinese semplificato moderno utilizza principalmente la scrittura orizzontale, anche se il testo verticale rimane comune in contesti artistici e cerimoniali.
  • Giappone.Il giapponese utilizza sia il sistema di scrittura verticale (縦書き/tategaki) che quello orizzontale (横書き/yokogaki). Il testo verticale è ancora ampiamente utilizzato in romanzi, manga, giornali e documenti tradizionali.
  • Corea.Storicamente, in coreano si utilizzava la scrittura verticale (세로쓰기), ma il coreano moderno (한글) utilizza prevalentemente layout orizzontali. Il testo verticale appare in contesti tradizionali e applicazioni artistiche.
  • Vietnam: Nelle scritture vietnamite tradizionali, quando si utilizzavano i caratteri cinesi (Chữ Hán), si adottava spesso una disposizione verticale, anche se questa pratica è in gran parte scomparsa con l'adozione dell'alfabeto latino.

Applicazioni moderne del testo verticale

Nonostante la tendenza globale verso la scrittura orizzontale, le disposizioni di testo verticale rimangono rilevanti in diversi contesti:

  • Pubblicazioni: Romanzi, raccolte di poesie e opere letterarie tradizionali a Taiwan, in Giappone e a Hong Kong.
  • Design: Loghi, segnaletica e layout artistici che richiedono un forte impatto visivo.
  • Media digitali.E-book, applicazioni mobili e contenuti web pensati per le preferenze di lettura tradizionali.
  • Documentazione.Documenti legali, certificati e comunicazioni formali in formati tradizionali.

Componente HotPDF: Supporto professionale per testo verticale.

Il HotPDF, componente per Delphi. Fornisce un supporto completo per la disposizione verticale del testo nei documenti PDF, rendendolo una soluzione ideale per gli sviluppatori che lavorano con applicazioni multilingue o formati di documenti tradizionali.

Caratteristiche principali per la tipografia verticale.

  • Supporto Unicode.Compatibilità completa con i set di caratteri CJK (cinese, giapponese, coreano).
  • Incorporamento dei font.Garantisce una visualizzazione coerente su diversi sistemi.
  • Layout Misti.Combina testo orizzontale e verticale nello stesso documento.
  • Posizionamento Preciso.Controllo preciso a livello di pixel sul posizionamento del testo.
  • Supporto Multilingue.Gestisce script complessi e combinazioni di caratteri.
HotPDF Component generating vertical text in PDF - showing Chinese, Japanese, and Korean characters in traditional vertical layout
Figura 1: Documento PDF con layout di testo verticale generato dal componente HotPDF, che dimostra il supporto multilingue per il cinese (中文), il giapponese (日本語) e il coreano (한국어) nella tipografia verticale.

Guida all'implementazione: Esempio di codice Delphi.

Il seguente esempio di codice Delphi completo dimostra come implementare il rendering di testo verticale utilizzando il componente HotPDF. Questo esempio mostra sia i layout di testo orizzontali che verticali con più lingue.

Evidenziazione delle funzionalità del codice.

  • Configurazione del font: Configurazione corretta dei font Unicode per il supporto multilingue.
  • Posizionamento del testo.: Controllo preciso del posizionamento del testo nei layout verticali.
  • Combinazione di lingue.: Combinazione di diversi sistemi di scrittura (latino, CJK) nello stesso documento.
  • Gestione delle risorse.Inizializzazione e pulizia corrette delle risorse 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.

Dettagli sull'implementazione tecnica.

Selezione dei font e supporto Unicode.

Quando si lavora con testo verticale nei PDF, la corretta selezione dei font è fondamentale per garantire la corretta visualizzazione dei caratteri in diverse lingue.

  • Arial Unicode MS.Font Unicode completi che supportano la maggior parte dei caratteri CJK.
  • Incorporamento dei font.Abilitare sempre. FontEmbedding := true per garantire una visualizzazione coerente.
  • Codifica dei caratteri.Utilizzare la codifica UTF-8 per una corretta gestione dei caratteri Unicode.

Best practices per il posizionamento del testo.

Il posizionamento verticale del testo richiede un'attenta considerazione del flusso di lettura e della spaziatura dei caratteri.

  1. Flusso delle colonne da destra a sinistra.Inizia dalla posizione più a destra e procedi verso sinistra per le colonne successive.
  2. Flusso dei caratteri dall'alto verso il basso.I caratteri all'interno di ciascuna colonna scorrono dall'alto verso il basso.
  3. Spaziatura uniforme.Mantieni una spaziatura uniforme tra le colonne per un aspetto professionale.
  4. Gestione di script misti.Considerare diverse larghezze di carattere quando si combinano script latini e CJK.

Funzionalità avanzate e personalizzazione.

Suggerimenti per l'ottimizzazione delle prestazioni.

  • 🚀 Operazioni batch su testo.Raggruppare più output di testo per ridurre al minimo le operazioni PDF.
  • 🚀 Memorizzazione nella cache dei font.Riutilizzare gli oggetti font quando possibile per migliorare le prestazioni.
  • 🚀 Gestione della memoria.Smaltire correttamente le istanze di HotPDF per prevenire perdite di memoria.
  • 🚀 Elaborazione in streaming.Utilizzare flussi di memoria per documenti di grandi dimensioni per migliorare la velocità di elaborazione.

Risoluzione dei problemi comuni.

⚠️ Problemi comuni e soluzioni.

  • Caratteri mancanti.Assicurarsi che il font selezionato supporti tutti gli intervalli Unicode richiesti.
  • Posizionamento errato.Verificare la comprensione del sistema di coordinate (HotPDF utilizza l'origine in alto a sinistra).
  • Problemi di rendering dei font.: Abilitare l'incorporamento dei font e utilizzare font Unicode adatti.
  • Problemi di prestazioni.: Ottimizzare le chiamate di output del testo e considerare la struttura del documento.

Risorse correlate e letture aggiuntive.

Documentazione e supporto.

Argomenti correlati

  • 🔗 Rendering del testo PDF: Tecniche di tipografia avanzate nei documenti PDF
  • 🔗 Generazione di PDF multilingueGestione di script complessi e lingue da destra a sinistra.
  • 🔗 Programmazione Unicode in Delphi.Best practice per la gestione di Unicode nelle applicazioni Delphi.
  • 🔗 Tipografia asiatica.Approcci tradizionali e moderni per la disposizione del testo CJK.

Conclusione.

Il HotPDF, componente per Delphi. offre un supporto robusto per la disposizione verticale del testo, il che lo rende un'ottima scelta per gli sviluppatori che lavorano con la tipografia asiatica tradizionale o le applicazioni di progettazione moderne che richiedono un orientamento verticale del testo. Con una corretta implementazione dei font Unicode, un posizionamento accurato e attenzione alle convenzioni tipografiche culturali, è possibile creare documenti PDF professionali che rispettano i modelli di lettura tradizionali mantenendo al contempo gli standard tecnici moderni.

Che tu stia sviluppando applicazioni per l'editoria, la gestione documentale o il design creativo, le funzionalità di testo verticale di HotPDF ti consentono di creare documenti PDF culturalmente appropriati e visivamente accattivanti che soddisfano un pubblico globale diversificato.