Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP FPDI 라이브러리에서 인코딩을 설정하는 방법

FPDI 라이브러리를 사용해 PDF를 생성할 때 한글이나 특수 문자가 깨지는 문제를 겪는 경우가 많습니다. 이는 PDF 문서가 기본적으로 UTF-8을 지원하지 않고, 특정 인코딩 방식을 요구하기 때문입니다. 이 글에서는 FPDI에서 올바른 인코딩을 설정하는 방법을 단계별로 살펴보겠습니다.

1. 올바른 알파벳을 지원하는 새 폰트 추가

인코딩 문제를 해결하는 첫 번째 단계는 필요한 문자 집합(alphabet)을 정확히 지원하는 폰트를 추가하는 것입니다. 아래 코드처럼 AddFont()SetFont() 메서드를 사용합니다.

$pdf->AddFont('DejaVu','','DejaVuSansCondensed.php');
$pdf->SetFont('DejaVu', '', 10, '', false);

DejaVu 폰트는 다양한 언어의 문자를 폭넓게 지원하기 때문에 다국어 PDF 문서를 만들 때 자주 활용됩니다.

2. FPDI에서 지원 가능한 인코딩 목록

FPDI에서 사용할 수 있는 대표적인 인코딩은 크게 세 계열로 나눌 수 있습니다.

Windows 코드 페이지(cp) 계열

cp1250 (중앙 유럽)
cp1251 (키릴 문자)
cp1252 (서유럽)
cp1253 (그리스)
cp1254 (터키)
cp1255 (히브리)
cp1257 (발트)
cp1258 (베트남)
cp874 (태국)

ISO-8859 계열

ISO-8859-1 (서유럽)
ISO-8859-2 (중앙 유럽)
ISO-8859-4 (발트)
ISO-8859-5 (키릴 문자)
ISO-8859-7 (그리스)
ISO-8859-9 (터키)
ISO-8859-11 (태국)
ISO-8859-15 (서유럽)
ISO-8859-16 (중앙 유럽)

KOI8 계열

KOI8-R (러시아어)
KOI8-U (우크라이나어)

각 인코딩은 지역과 언어에 따라 지원 범위가 다르므로, 문서에 포함될 언어에 맞는 인코딩을 선택하는 것이 중요합니다.

3. UTF-8 변환 예제

PHP에서 제공하는 iconv() 함수를 사용하면 UTF-8 문자열을 원하는 인코딩으로 손쉽게 변환할 수 있습니다. 다음은 UTF-8을 cp1250(중앙 유럽)으로 변환하는 예제입니다.

$str = iconv('UTF-8', 'cp1250', 'zazółcić gęślą jaźń');

주의 사항

참고: 사용자가 입력한 문자열이 UTF-8 인코딩이라면, PDF에 출력하기 전에 반드시 cp1250과 같은 해당 인코딩으로 변환해야 합니다. 그렇지 않으면 문자가 깨져 보이거나 PDF 생성 과정에서 오류가 발생할 수 있습니다.