Article technique

Exemple de projet de texte vertical du composant HotPDF

· Programmation PDF

Composant HotPDF pour Delphi : Création de mises en page verticales dans les documents PDF.

Ce guide complet explique comment le composant HotPDF permet aux développeurs de générer facilement du texte vertical Unicode dans les documents PDF.

Comprendre la mise en page verticale (縦書き/세로쓰기/竖排).

La mise en page verticale, également connue sous le nom de écriture verticale., "zongshu" en chinois ou "tategaki" (縦書き) en japonais, est une méthode traditionnelle de mise en page de texte qui a vu le jour en Chine il y a plus de 2000 ans. Ce système d'écriture s'écoule de haut en bas et de droite à gauche, créant une apparence visuelle distinctive qui revêt une profonde signification culturelle.

Contexte historique et culturel.

Les systèmes d'écriture verticale ont joué un rôle crucial dans la littérature et la documentation est-asiatiques :

  • Chine.: Les textes en chinois traditionnel, la poésie classique et la calligraphie utilisaient principalement des dispositions verticales. Le chinois simplifié moderne utilise principalement l'écriture horizontale, bien que le texte vertical reste courant dans les contextes artistiques et cérémoniels.
  • Japon.Le japonais utilise à la fois les systèmes d'écriture verticale (縦書き/tategaki) et horizontale (横書き/yokogaki). Le texte vertical est encore largement utilisé dans les romans, les mangas, les journaux et les documents traditionnels.
  • Corée.Historiquement, l'écriture verticale (세로쓰기) était utilisée, mais le coréen moderne (한글) utilise principalement des dispositions horizontales. Le texte vertical apparaît dans des contextes traditionnels et des applications artistiques.
  • Vietnam: Le vietnamien utilisait des dispositions verticales lorsqu'il était écrit en caractères chinois (Chữ Hán), bien que cette pratique ait largement disparu avec l'adoption de l'alphabet latin.

Applications modernes du texte vertical

Malgré la tendance mondiale vers l'écriture horizontale, les dispositions de texte vertical restent pertinentes dans plusieurs contextes :

  • Publication: Romans, recueils de poésie et œuvres littéraires traditionnelles à Taïwan, au Japon et à Hong Kong.
  • Design: Logos, signalétique et mises en page artistiques qui nécessitent un impact visuel.
  • Médias numériques.: Livres électroniques, applications mobiles et contenu web ciblant les préférences de lecture traditionnelles.
  • Documentation.: Documents juridiques, certificats et communications formelles dans les formats traditionnels.

Composant HotPDF : Prise en charge professionnelle du texte vertical.

La : composant HotPDF Delphi offre une prise en charge complète de la mise en page de texte vertical dans les documents PDF, ce qui en fait une solution idéale pour les développeurs travaillant sur des applications multilingues ou des formats de documents traditionnels.

Principales fonctionnalités pour la typographie verticale.

  • Prise en charge de Unicode.: Compatibilité totale avec les jeux de caractères CJK (chinois, japonais, coréen).
  • : Intégration des polices.: Assure une présentation cohérente sur différents systèmes.
  • : Mises en page combinées.: Combinez du texte horizontal et vertical dans le même document.
  • : Positionnement précis.: Contrôle parfait au pixel du placement du texte.
  • : Prise en charge de plusieurs langues.: Gérer des scripts complexes et des combinaisons de caractères.
HotPDF Component generating vertical text in PDF - showing Chinese, Japanese, and Korean characters in traditional vertical layout
Figure 1 : : Document PDF avec une mise en page verticale généré par le composant HotPDF, démontrant la prise en charge multilingue pour le chinois (中文), le japonais (日本語) et la typographie verticale coréenne (한국어).

Guide d'implémentation : Exemple de code Delphi.

L'exemple de code Delphi complet suivant illustre comment implémenter le rendu de texte vertical en utilisant le composant HotPDF. Cet exemple présente à la fois les mises en page de texte horizontales et verticales avec plusieurs langues.

Points forts du code.

  • : Configuration de la police.: Configuration correcte des polices Unicode pour la prise en charge de plusieurs langues.
  • Positionnement du texte.: Contrôle précis du placement du texte dans les mises en page verticales.
  • Combinaison de langues.: Combiner différents systèmes d'écriture (latin, CJK) dans le même document.
  • Gestion des ressources: Initialisation et libération correctes des ressources 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.

Détails de l'implémentation technique.

: Sélection des polices et prise en charge de Unicode.

: Lors du travail avec du texte vertical dans les fichiers PDF, la sélection appropriée des polices est cruciale pour garantir l'affichage correct des caractères dans différentes langues.

  • Arial Unicode MS.: Police Unicode complète prenant en charge la plupart des caractères CJK.
  • : Intégration des polices.: Toujours activer. FontEmbedding := true : pour garantir un affichage cohérent.
  • Encodage des caractères.: Utilisez l'encodage UTF-8 pour une gestion correcte des caractères Unicode.

Bonnes pratiques pour le positionnement du texte.

Le positionnement vertical du texte nécessite une attention particulière au flux de lecture et à l'espacement des caractères.

  1. Flux de colonnes de droite à gauche.: Commencez par la position la plus à droite et déplacez-vous vers la gauche pour les colonnes suivantes.
  2. Flux des caractères de haut en bas.: Les caractères de chaque colonne s'affichent de haut en bas.
  3. Espacement uniforme.: Maintenez un espacement uniforme entre les colonnes pour une apparence professionnelle.
  4. Gestion des scripts mixtes.: Tenez compte des différentes largeurs de caractères lors du mélange des scripts latins et CJK.

Fonctionnalités avancées et personnalisation.

Conseils pour l'optimisation des performances.

  • 🚀 Opérations par lots sur le texte.: Regroupez plusieurs sorties de texte pour minimiser les opérations PDF.
  • 🚀 Mise en cache des polices.: Réutilisez les objets de police lorsque cela est possible pour améliorer les performances.
  • 🚀 Gestion de la mémoire.: Éliminez correctement les instances de HotPDF pour éviter les fuites de mémoire.
  • 🚀 : Traitement en flux continu.: Utilisez des flux mémoire pour les documents volumineux afin d'améliorer la vitesse de traitement.

Dépannage des problèmes courants.

: ⚠️ Problèmes courants et solutions.

  • : Caractères manquants.: Assurez-vous que la police sélectionnée prend en charge toutes les plages Unicode requises.
  • : Positionnement incorrect.: Vérifiez la compréhension du système de coordonnées (HotPDF utilise l'origine en haut à gauche).
  • Problèmes de rendu des polices.: Activer l'intégration des polices et utiliser des polices Unicode appropriées.
  • Problèmes de performance.: Optimiser les appels de sortie de texte et tenir compte de la structure du document.

Ressources connexes et lectures complémentaires.

Documentation et support.

Sujets connexes

  • 🔗 Rendu de texte PDF: Techniques de typographie avancées dans les documents PDF
  • 🔗 Génération de PDF multilingues: Gestion des scripts complexes et des langues à écriture de droite à gauche.
  • 🔗 : Programmation Unicode en Delphi.: Bonnes pratiques pour la gestion de l'Unicode dans les applications Delphi.
  • 🔗 : Typographie asiatique.: Approches traditionnelles et modernes de la mise en page du texte CJK.

Conclusion.

La : composant HotPDF Delphi : offre une prise en charge robuste des mises en page verticales, ce qui en fait un excellent choix pour les développeurs travaillant avec la typographie asiatique traditionnelle ou les applications de conception modernes nécessitant une orientation verticale du texte. Avec une implémentation appropriée des polices Unicode, un positionnement soigné et une attention aux conventions de typographie culturelle, vous pouvez créer des documents PDF professionnels qui respectent les modèles de lecture traditionnels tout en maintenant les normes techniques modernes.

: Que vous développiez des applications pour la publication, la gestion de documents ou la conception créative, les fonctionnalités de texte vertical de HotPDF vous permettent de créer des documents PDF culturellement appropriés et visuellement attrayants qui répondent aux besoins de publics mondiaux diversifiés.