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.

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.
- Flux de colonnes de droite à gauche.: Commencez par la position la plus à droite et déplacez-vous vers la gauche pour les colonnes suivantes.
- Flux des caractères de haut en bas.: Les caractères de chaque colonne s'affichent de haut en bas.
- Espacement uniforme.: Maintenez un espacement uniforme entre les colonnes pour une apparence professionnelle.
- 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.
- 📚 Page officielle du produit HotPDF Component.
- 📚 Blog losLab – Tutoriels de développement PDF.
- 📚 Norme Unicode: Comprendre l'encodage des caractères pour les applications internationales
- 📚 Spécification PDF: Référence Adobe PDF pour une personnalisation avancée
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.