HotPDF Delphi-komponent: Skapa vertikala textlayouter i PDF-dokument
Denna omfattande guide visar hur HotPDF-komponent gör det möjligt för utvecklare att generera vertikal Unicode-text i PDF-dokument med lätthet.
Förstå vertikal typsättning (縦書き/세로쓰기/竖排)
Vertikal sättning, även känd som vertikal skrift, 縱書 på kinesiska eller tategaki (縦書き) på japanska, är en traditionell textlayoutmetod som har sitt ursprung i det antika Kina för över 2 000 år sedan. Detta skrivsystem flödar från topp till botten och höger till vänster, vilket skapar ett distinkt visuellt utseende som har en djup kulturell betydelse.
Historisk och kulturell kontext
Vertikala skriftsystem har spelat en avgörande roll i östasiatisk litteratur och dokumentation:
- Kina: Traditionella kinesiska texter, klassisk poesi och kalligrafi använde främst vertikala layouter. Modern förenklad kinesiska använder i första hand horisontell skrift, även om vertikal text fortfarande är vanlig i konstnärliga och ceremoniella sammanhang.
- Japan: Japanska har både vertikala (縦書き/tategaki) och horisontella (横書き/yokogaki) skriftsystem. Vertikal text används fortfarande i stor utsträckning i romaner, manga, tidningar och traditionella dokument.
- Korea: Historiskt använd vertikal skrift (세로쓰기), men modern koreanska (한글) använder övervägande horisontella layouter. Vertikal text förekommer i traditionella sammanhang och konstnärliga tillämpningar.
- Vietnam: Traditionella vietnamesiska texter använde vertikala layouter när de skrevs med kinesiska tecken (Chữ Hán), även om denna praxis i stort sett har försvunnit med antagandet av det latinska alfabetet.
Moderna tillämpningar av vertikal text
Trots den globala trenden mot horisontell skrift är vertikala textlayouter fortfarande relevanta i flera sammanhang:
- Publicering: Traditionella romaner, diktsamlingar och litterära verk i Taiwan, Japan och Hong Kong
- Design: Logotyper, skyltar och konstnärliga layouter som kräver visuell påverkan
- Digitala medier: E-böcker, mobilapplikationer och webbinnehåll inriktat på traditionella läspreferenser
- Dokumentation: Juridiska dokument, certifikat och formell kommunikation i traditionella format
HotPDF-komponent: Professionellt vertikalt textstöd
Den HotPDF Delphi-komponent ger omfattande stöd för vertikal textlayout i PDF-dokument, vilket gör det till en idealisk lösning för utvecklare som arbetar med flerspråkiga applikationer eller traditionella dokumentformat.
Nyckelfunktioner för vertikal typografi
- ✅ Unicode-stöd: Full kompatibilitet med CJK (kinesiska, japanska, koreanska) teckenuppsättningar
- ✅ Inbäddning av teckensnitt: Säkerställer konsekvent visning över olika system
- ✅ Blandade layouter: Kombinera horisontell och vertikal text i samma dokument
- ✅ Exakt positionering: Pixel-perfekt kontroll över textplacering
- ✅ Flerspråkig support: Hantera komplexa skript och teckenkombinationer

Implementeringsguide: Delphi Code Exempel
Följande omfattande Delphi-kodexempel visar hur man implementerar vertikal textrendering med HotPDF-komponenten. Det här exemplet visar både horisontella och vertikala textlayouter med flera språk.
Kodfunktioner markerade
- Teckensnittskonfiguration: Korrekt inställning av Unicode-teckensnitt för stöd för flera språk
- Textpositionering: Exakt kontroll över textplacering i vertikala layouter
- Språkblandning: Kombinera olika skript (latin, CJK) i samma dokument
- Resurshantering: Korrekt initiering och rensning av PDF-resurser
|
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. |
Tekniska implementeringsdetaljer
Teckensnittsval och Unicode-stöd
När du arbetar med vertikal text i PDF-filer är korrekt teckensnittsval avgörande för att säkerställa korrekt teckenvisning på olika språk:
- Arial Unicode MS: Omfattande Unicode-teckensnitt som stöder de flesta CJK-tecken
- Inbäddning av teckensnitt: Aktivera alltid
FontEmbedding := trueför att säkerställa konsekvent visning - Teckenkodning: Använd UTF-8-kodning för korrekt Unicode-teckenhantering
Bästa metoder för textpositionering
Vertikal textpositionering kräver noggrant övervägande av läsflödet och teckenavstånd:
- Höger-till-vänster kolumnflöde: Börja från positionen längst till höger och flytta åt vänster för efterföljande kolumner
- Karaktärsflöde från topp till botten: Tecken inom varje kolumn flyter uppifrån och ned
- Konsekvent mellanrum: Bibehåll enhetligt kolumnavstånd för professionellt utseende
- Blandad manushantering: Tänk på olika teckenbredder när du blandar latinska och CJK-skript
Avancerade funktioner och anpassning
Tips för prestandaoptimering
- 🚀 Batchtextoperationer: Gruppera flera textutdata för att minimera PDF-operationer
- 🚀 Font Caching: Återanvänd teckensnittsobjekt när det är möjligt för att förbättra prestandan
- 🚀 Minneshantering: Kassera HotPDF-instanser på rätt sätt för att förhindra minnesläckor
- 🚀 Strömbearbetning: Använd minnesströmmar för stora dokument för att förbättra bearbetningshastigheten
Felsökning av vanliga problem
⚠️ Vanliga problem och lösningar
- Saknade karaktärer: Se till att det valda teckensnittet stöder alla nödvändiga Unicode-intervall
- Felaktig placering: Verifiera förståelse av koordinatsystemet (HotPDF använder ursprung uppe till vänster)
- Problem med teckensnittsrendering: Aktivera inbäddning av teckensnitt och använd lämpliga Unicode-teckensnitt
- Prestandaproblem: Optimera textutmatningsanrop och överväg dokumentstrukturen
Relaterade resurser och ytterligare läsning
Dokumentation och support
- 📚 HotPDF-komponents officiella produktsida
- 📚 losLab Blog – Handledningar för PDF-utveckling
- 📚 Unicode standard: Förstå teckenkodning för internationella applikationer
- 📚 PDF-specifikation: Adobe PDF-referens för avancerad anpassning
Relaterade ämnen
- 🔗 PDF-textrendering: Avancerade typografitekniker i PDF-dokument
- 🔗 Flerspråkig PDF-generering: Hanterar komplexa skript och höger-till-vänster-språk
- 🔗 Delphi Unicode-programmering: Bästa metoder för Unicode-hantering i Delphi-applikationer
- 🔗 Asiatisk typografi: Traditionella och moderna metoder för CJK-textlayout
Slutsats
Den HotPDF Delphi-komponent ger robust stöd för vertikala textlayouter, vilket gör det till ett utmärkt val för utvecklare som arbetar med traditionell asiatisk typografi eller moderna designapplikationer som kräver vertikal textorientering. Med korrekt implementering av Unicode-teckensnitt, noggrann positionering och uppmärksamhet på kulturtypografikonventioner kan du skapa professionella PDF-dokument som respekterar traditionella läsmönster samtidigt som modern teknisk standard bibehålls.
Oavsett om du utvecklar applikationer för publicering, dokumenthantering eller kreativ design, gör HotPDFs vertikala textfunktioner det möjligt för dig att skapa kulturellt lämpliga och visuellt tilltalande PDF-dokument som betjänar olika globala målgrupper.