Categories: PDF 프로그래밍

HotPDF Delphi 컴포넌트: PDF 문서에서 세로쓰기

HotPDF Delphi 컴포넌트: PDF 문서에서 세로쓰기 텍스트 레이아웃 생성

이 포괄적인 가이드는 HotPDF 컴포넌트를 사용하여 개발자가 PDF 문서에서 유니코드 세로쓰기 텍스트를 쉽게 생성하는 방법을 보여줍니다.

세로쓰기 조판의 이해 (세로쓰기/縦書き/竖排)

세로쓰기 조판은 한국어로 세로쓰기라고도 불리며, 2000년 이상 전 고대 중국에서 시작된 전통적인 텍스트 레이아웃 방법입니다. 이 문자 체계는 위에서 아래로, 오른쪽에서 왼쪽으로 흐르며, 깊은 문화적 의미를 가진 독특한 시각적 외관을 만들어냅니다.

역사적 및 문화적 배경

세로쓰기 시스템은 동아시아의 문학과 문서에서 중요한 역할을 해왔습니다:

  • 중국: 전통적인 중국어 텍스트, 고전 시, 서예에서는 주로 세로쓰기 레이아웃이 사용되었습니다. 현대 간체 중국어는 주로 가로쓰기를 사용하지만, 세로쓰기 텍스트는 예술적·의식적 맥락에서 일반적입니다.
  • 일본: 일본어는 세로쓰기(縦書き/たてがき)와 가로쓰기(横書き/よこがき) 두 문자 체계를 모두 유지하고 있습니다. 세로쓰기 텍스트는 소설, 만화, 신문, 전통 문서에서 널리 사용됩니다.
  • 한국: 역사적으로는 세로쓰기를 사용했지만, 현대 한국어(한글)는 주로 가로쓰기 레이아웃을 사용합니다. 세로쓰기 텍스트는 전통적인 맥락이나 예술적 응용에서 볼 수 있습니다.
  • 베트남: 전통적인 베트남어 텍스트는 한자(Chữ Hán)로 쓰여질 때 세로쓰기 레이아웃을 사용했지만, 이 관행은 라틴 문자 채택과 함께 거의 사라졌습니다.

세로쓰기 텍스트의 현대적 응용

가로쓰기로의 전 세계적 경향에도 불구하고, 세로쓰기 텍스트 레이아웃은 여러 맥락에서 관련성을 유지하고 있습니다:

  • 출판: 대만, 일본, 홍콩의 전통적인 소설, 시집, 문학 작품
  • 디자인: 시각적 임팩트가 필요한 로고, 간판, 예술적 레이아웃
  • 디지털 미디어: 전통적인 읽기 선호도를 대상으로 하는 전자책, 모바일 애플리케이션, 웹 콘텐츠
  • 문서: 전통적인 형식의 법적 문서, 증명서, 공식 통신

HotPDF 컴포넌트: 전문적인 세로쓰기 텍스트 지원

HotPDF Delphi 컴포넌트는 PDF 문서에서 세로쓰기 텍스트 레이아웃의 포괄적인 지원을 제공하여, 다국어 애플리케이션이나 전통적인 문서 형식으로 작업하는 개발자에게 이상적인 솔루션입니다.

세로쓰기 조판의 주요 기능

  • 유니코드 지원: CJK(중국어, 일본어, 한국어) 문자 세트와의 완전한 호환성
  • 폰트 임베딩: 다른 시스템 간의 일관된 표시 보장
  • 혼합 레이아웃: 같은 문서 내에서 가로쓰기와 세로쓰기 텍스트 결합
  • 정밀한 위치 지정: 텍스트 배치의 픽셀 완벽한 제어
  • 다국어 지원: 복잡한 스크립트와 문자 조합 처리
그림 1: HotPDF 컴포넌트에 의해 생성된 세로쓰기 텍스트 레이아웃의 PDF 문서. 중국어(中文), 일본어(日本語), 한국어(한국어)의 세로쓰기 조판 다국어 지원을 보여줍니다.

구현 가이드: Delphi 코드 예제

다음 포괄적인 Delphi 코드 예제는 HotPDF 컴포넌트를 사용하여 세로쓰기 텍스트 렌더링을 구현하는 방법을 보여줍니다. 이 예제는 여러 언어에서 가로쓰기와 세로쓰기 텍스트 레이아웃을 모두 소개합니다.

코드 기능 하이라이트

  • 폰트 구성: 다국어 지원을 위한 유니코드 폰트의 적절한 설정
  • 텍스트 위치 지정: 세로쓰기 레이아웃에서 텍스트 배치의 정밀한 제어
  • 언어 혼합: 같은 문서 내에서 다른 스크립트(라틴 문자, CJK) 결합
  • 리소스 관리: PDF 리소스의 적절한 초기화 및 정리
{***********************************************************}
// HotPDF PDF 컴포넌트
// Copyright(c)2007-2025, https://www.loslab.com
{***********************************************************}

{
  유닛: uVerticalText
  목적: HotPDF에서 세로쓰기 텍스트 출력 기능 시연
  기능: - 가로쓰기 및 세로쓰기 텍스트 렌더링
       - 다국어 지원(영어, 한국어, 일본어, 중국어)
       - 유니코드 문자 처리
       - 적절한 표시를 위한 폰트 임베딩
}
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;                    // PDF 생성용 HotPDF 컴포넌트

type
  // 세로쓰기 텍스트 시연용 메인 폼 클래스
  TForm1 = class(TForm)
    Button1: TButton;         // PDF 생성을 트리거하는 버튼
    procedure Button1Click(Sender: TObject);
  private
    {프라이빗 선언}
  public
    {퍼블릭 선언}
  end;

var
  Form1: TForm1;              // 메인 폼 인스턴스
  HotPDF: THotPDF;            // HotPDF 컴포넌트 인스턴스

implementation

{$R *.DFM}

// 중요한 참고: 이전 버전의 Delphi는 유니코드 문자를 올바르게 처리할 수 없습니다.
// 이 파일을 열려면 Delphi 2009 이상이 필요합니다.

{
  메서드: Button1Click
  목적: 여러 언어에서 세로쓰기 및 가로쓰기 텍스트 출력 시연
  매개변수: Sender - 이벤트를 트리거한 객체
  기능: - 가로쓰기 및 세로쓰기 텍스트 모두로 PDF 생성
       - 여러 언어로 텍스트 표시(영어, 한국어, 일본어, 중국어)
       - 적절한 문자 표시를 위한 유니코드 폰트 사용
       - 다양한 텍스트 위치 지정 기법 시연
}
procedure TForm1.Button1Click(Sender: TObject);
begin
  // HotPDF 인스턴스 생성
  HotPDF := THotPDF.Create(nil);
  try
    // PDF 생성 설정 구성
    HotPDF.AutoLaunch := true;        // 생성 후 PDF를 자동으로 열기
    HotPDF.FontEmbedding := true;     // 적절한 표시를 위해 폰트 임베딩
    HotPDF.FileName := 'VerticalText.pdf';  // 출력 파일명 설정
    
    // PDF 문서 생성 시작
    HotPDF.BeginDoc;
    HotPDF.CurrentPage.Size := psA4;  // 페이지 크기를 A4로 설정

    // === 가로쓰기 텍스트 시연 ===
    HotPDF.CurrentPage.SetFont('Arial Unicode MS', [], 12, 0, False); // 가로쓰기 텍스트 모드 설정
    // 여러 언어로 가로쓰기 텍스트 출력
    HotPDF.CurrentPage.TextOut(80, 70, 0, 'Horizontal Text 가로텍스트 가로쓰기 横向きのテキスト 横書き 横向文本 横書');
    // 장식적인 구분선 추가
    HotPDF.CurrentPage.TextOut(40, 110, 0, '※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※');

    // === 세로쓰기 텍스트 시연 ===
    HotPDF.CurrentPage.SetFont('Arial Unicode MS', [], 12, 0, true); // 세로쓰기 텍스트 모드 설정
    
    // 혼합 언어 세로쓰기 텍스트(한국어, 일본어)
    HotPDF.CurrentPage.TextOut(530, 180, 0, '세로쓰기 縦書き 세로쓰기 垂直テキスト 수직 텍스트');
    
    // 중국어 텍스트 - 독립선언서 발췌
    HotPDF.CurrentPage.SetFont('Arial Unicode MS', [], 12, 0, true); 
    HotPDF.CurrentPage.TextOut(500, 180, 0, '『我等之見解為,下述真理不證自明:凡人生而平等,秉造物者之賜,');
    HotPDF.CurrentPage.TextOut(470, 180, 0, '擁諸無可轉讓之權利,包含生命權、自由權、與追尋幸福之權。』');

    // 일본어 텍스트 - 전통 시
    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, '嗚呼古城なにをか語り、岸の波なにをか答ふ、過し世を静かに思へ');

    // 중국 고전시 - 이백의 시
    HotPDF.CurrentPage.TextOut(270, 180, 0, '棄我去者昨日之日不可留,亂我心者今日之日多煩憂。');
    HotPDF.CurrentPage.TextOut(240, 180, 0, '長風萬里送秋鴈,對此可以酣高樓。蓬萊文章建安骨,中間小謝又清發');
    HotPDF.CurrentPage.TextOut(210, 180, 0, '俱懷逸興壯思飛,欲上青天攬明月。抽刀斷水水更流,舉杯消愁愁更愁');
    HotPDF.CurrentPage.TextOut(180, 180, 0, '人生在世不稱意。明朝散髮弄扁舟。');

    // 한국어 텍스트 - 현대시
    // 참고: 호환성을 위해 Malgun Gothic 대신 Arial Unicode MS 사용
    //HotPDF.CurrentPage.SetFont('Malgun Gothic', [], 12, 0, true); // 대체 한국어 폰트
    HotPDF.CurrentPage.TextOut(140, 180, 0, '눈 맞으며 어둠 속을 떨며 가는 사람들을 위해、노래가 길이 되어 앞질러 가고');
    HotPDF.CurrentPage.TextOut(110, 180, 0, '돌아올 길 없는 눈길 앞질러 가고');
    HotPDF.CurrentPage.TextOut(80, 180, 0, '아름다움이 이 세상을 건질 때까지');
    HotPDF.CurrentPage.TextOut(50, 180, 0, '절망에서 즐거움이 찾아올 때까지');

    // === 푸터 장식 ===
    HotPDF.CurrentPage.SetFont('Arial Unicode MS', [], 12, 0, False); // 가로쓰기 텍스트로 돌아가기
    // 장식적인 푸터 라인 추가
    HotPDF.CurrentPage.TextOut(40, 720, 0, '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■');
    
    // PDF 문서 완성
    HotPDF.EndDoc;
  finally 
    // 리소스 정리
    HotPDF.Free;
  end;
end;

end.

기술 구현 세부사항

폰트 선택 및 유니코드 지원

PDF에서 세로쓰기 텍스트를 다룰 때, 다른 언어에서 올바른 문자 표시를 보장하기 위해 적절한 폰트 선택이 중요합니다:

  • Arial Unicode MS: 대부분의 CJK 문자를 지원하는 포괄적인 유니코드 폰트
  • 폰트 임베딩: 일관된 표시를 보장하기 위해 항상 FontEmbedding := true를 활성화
  • 문자 인코딩: 적절한 유니코드 문자 처리를 위해 UTF-8 인코딩 사용

텍스트 위치 지정 모범 사례

세로쓰기 텍스트의 위치 지정은 읽기 흐름과 문자 간격의 신중한 고려가 필요합니다:

  1. 오른쪽에서 왼쪽으로의 열 흐름: 가장 오른쪽 위치에서 시작하여 후속 열을 위해 왼쪽으로 이동
  2. 위에서 아래로의 문자 흐름: 각 열 내의 문자는 위에서 아래로 흐름
  3. 일관된 간격: 전문적인 외관을 위해 균일한 열 간격 유지
  4. 혼합 스크립트 처리: 라틴 문자와 CJK 스크립트를 혼합할 때 다른 문자 폭 고려

고급 기능 및 사용자 정의

성능 최적화 팁

  • 🚀 배치 텍스트 작업: PDF 작업을 최소화하기 위해 여러 텍스트 출력을 그룹화
  • 🚀 폰트 캐싱: 성능 향상을 위해 가능한 경우 폰트 객체 재사용
  • 🚀 메모리 관리: 메모리 누수를 방지하기 위해 HotPDF 인스턴스를 적절히 해제
  • 🚀 스트림 처리: 큰 문서의 처리 속도 향상을 위해 메모리 스트림 사용

일반적인 문제 해결

⚠️ 일반적인 문제 및 해결책

  • 문자 누락: 선택한 폰트가 필요한 모든 유니코드 범위를 지원하는지 확인
  • 위치 지정 부정확성: 좌표계 이해 확인(PDF는 왼쪽 하단 원점 사용)
  • 폰트 렌더링 문제: 폰트 임베딩을 활성화하고 시스템에 설치된 유니코드 폰트 사용
  • 성능 문제: 텍스트 출력 호출을 최적화하고 문서 구조 고려

관련 리소스 및 참고 자료

문서 및 지원

관련 주제

  • 🔗 PDF 텍스트 렌더링: PDF 문서에서 고급 조판 기법
  • 🔗 다국어 PDF 생성: 복잡한 스크립트 및 오른쪽에서 왼쪽 언어 처리
  • 🔗 Delphi 유니코드 프로그래밍: Delphi 애플리케이션에서 유니코드 처리 모범 사례
  • 🔗 아시아 조판: CJK 텍스트 레이아웃의 전통적 및 현대적 접근법

결론

HotPDF Delphi 컴포넌트는 세로쓰기 텍스트 레이아웃의 강력한 지원을 제공하여, 전통적인 아시아 조판이나 세로쓰기 텍스트 방향이 필요한 현대 디자인 애플리케이션으로 작업하는 개발자에게 탁월한 선택입니다. 유니코드 폰트의 적절한 구현, 신중한 위치 지정, 문화적 조판 관습에 대한 주의를 통해 전통적인 읽기 패턴을 존중하면서 현대 기술 표준을 유지하는 전문적인 PDF 문서를 만들 수 있습니다.

출판, 문서 관리, 창작 디자인 애플리케이션을 개발하든, HotPDF의 세로쓰기 텍스트 기능을 통해 다양한 글로벌 청중에게 서비스를 제공하는 문화적으로 적절하고 시각적으로 매력적인 PDF 문서를 만들 수 있습니다.

 

losLab

Devoted to developing PDF and Spreadsheet developer library, including PDF creation, PDF manipulation, PDF rendering library, and Excel Spreadsheet creation & manipulation library.

Recent Posts

HotPDF Delphi组件:在PDF文档中创建垂直文本布局

HotPDF Delphi组件:在PDF文档中创建垂直文本布局 本综合指南演示了HotPDF组件如何让开发者轻松在PDF文档中生成Unicode垂直文本。 理解垂直排版(縦書き/세로쓰기/竖排) 垂直排版,也称为垂直书写,中文称为縱書,日文称为tategaki(縦書き),是一种起源于2000多年前古代中国的传统文本布局方法。这种书写系统从上到下、从右到左流动,创造出具有深厚文化意义的独特视觉外观。 历史和文化背景 垂直书写系统在东亚文学和文献中发挥了重要作用: 中国:传统中文文本、古典诗歌和书法主要使用垂直布局。现代简体中文主要使用横向书写,但垂直文本在艺术和仪式场合仍然常见。 日本:日语保持垂直(縦書き/tategaki)和水平(横書き/yokogaki)两种书写系统。垂直文本仍广泛用于小说、漫画、报纸和传统文档。 韩国:历史上使用垂直书写(세로쓰기),但现代韩语(한글)主要使用水平布局。垂直文本出现在传统场合和艺术应用中。 越南:传统越南文本在使用汉字(Chữ Hán)书写时使用垂直布局,但随着拉丁字母的采用,这种做法已基本消失。 垂直文本的现代应用 尽管全球趋向于水平书写,垂直文本布局在几个方面仍然相关: 出版:台湾、日本和香港的传统小说、诗集和文学作品…

2 days ago

HotPDF Delphiコンポーネント-PDFドキュメントでの縦書き

HotPDF Delphiコンポーネント:PDFドキュメントでの縦書きテキストレイアウトの作成 この包括的なガイドでは、HotPDFコンポーネントを使用して、開発者がPDFドキュメントでUnicode縦書きテキストを簡単に生成する方法を実演します。 縦書き組版の理解(縦書き/세로쓰기/竖排) 縦書き組版は、日本語では縦書きまたはたてがきとも呼ばれ、2000年以上前の古代中国で生まれた伝統的なテキストレイアウト方法です。この書字体系は上から下、右から左に流れ、深い文化的意義を持つ独特の視覚的外観を作り出します。 歴史的・文化的背景 縦書きシステムは東アジアの文学と文書において重要な役割を果たしてきました: 中国:伝統的な中国語テキスト、古典詩、書道では主に縦書きレイアウトが使用されていました。現代の簡体字中国語は主に横書きを使用していますが、縦書きテキストは芸術的・儀式的な文脈で一般的です。 日本:日本語は縦書き(縦書き/たてがき)と横書き(横書き/よこがき)の両方の書字体系を維持しています。縦書きテキストは小説、漫画、新聞、伝統的な文書で広く使用されています。 韓国:歴史的には縦書き(세로쓰기)を使用していましたが、現代韓国語(한글)は主に横書きレイアウトを使用しています。縦書きテキストは伝統的な文脈や芸術的応用で見られます。 ベトナム:伝統的なベトナム語テキストは漢字(Chữ Hán)で書かれた際に縦書きレイアウトを使用していましたが、この慣行はラテン文字の採用とともにほぼ消失しました。 縦書きテキストの現代的応用 横書きへの世界的な傾向にもかかわらず、縦書きテキストレイアウトはいくつかの文脈で関連性を保っています: 出版:台湾、日本、香港の伝統的な小説、詩集、文学作品…

2 days ago

Отладка проблем порядка страниц PDF: Реальный кейс-стади

Отладка проблем порядка страниц PDF: Реальный кейс-стади компонента HotPDF Опубликовано losLab | Разработка PDF |…

3 days ago

PDF 페이지 순서 문제 디버깅: HotPDF 컴포넌트 실제 사례 연구

PDF 페이지 순서 문제 디버깅: HotPDF 컴포넌트 실제 사례 연구 발행자: losLab | PDF 개발…

3 days ago

PDFページ順序問題のデバッグ:HotPDFコンポーネント実例研究

PDFページ順序問題のデバッグ:HotPDFコンポーネント実例研究 発行者:losLab | PDF開発 | Delphi PDFコンポーネント PDF操作は特にページ順序を扱う際に複雑になることがあります。最近、私たちはPDF文書構造とページインデックスに関する重要な洞察を明らかにした魅力的なデバッグセッションに遭遇しました。このケーススタディは、一見単純な「オフバイワン」エラーがPDF仕様の深い調査に発展し、文書構造に関する根本的な誤解を明らかにした過程を示しています。 PDFページ順序の概念 - 物理的オブジェクト順序と論理的ページ順序の関係 問題 私たちはHotPDF DelphiコンポーネントのCopyPageと呼ばれるPDFページコピーユーティリティに取り組んでいました。このプログラムはデフォルトで最初のページをコピーするはずでしたが、代わりに常に2番目のページをコピーしていました。一見すると、これは単純なインデックスバグのように見えました -…

3 days ago

Debug dei Problemi di Ordine delle Pagine PDF

Debug dei Problemi di Ordine delle Pagine PDF: Studio di Caso Reale del Componente HotPDF…

3 days ago