2008-10-06 12 views
5

젠드 프레임 워크 Zend_Pdf 클래스에 "거의"문제가 없습니다. 생성 된 pdf 파일에서 멀티 바이트 문자가 제거됩니다. 예 : 내가 쓸 때 리투아니아어 문자가 제거 된 abcd가됩니다.Zend Framework를 사용하여 _with_ utf-8 멀티 바이트 문자를 생성하는 방법

특히 Zend_Pdf 문제인지, 일반적으로 PHP인지 확실하지 않습니다.

원본 텍스트는 작업을 수행하는 PHP 소스 파일뿐만 아니라 utf-8로 인코딩됩니다.)

P.S.을,

당신의 도움에 미리 감사합니다 Zend Framework v. 1.6을 실행하고 FONT_TIMES_BOLD 글꼴을 사용합니다. FONT_TIMES_ROMAN이 작동하지 않습니다

답변

10

Zend_Pdf은 Zend Framework 버전 1.5에서 UTF-8을 지원합니다. 그러나 표준 PDF 글꼴은 Latin1 문자 집합 만 지원합니다. 즉, Zend_Pdf_Font::FONT_TIMES_BOLD 또는 다른 "내장"글꼴을 사용할 수 없습니다. 특수 문자를 사용하려면 다른 문자 세트의 문자를 포함하는 다른 TTF 글꼴을로드해야합니다.

나는 Mac OS X을 사용하기 때문에 다음 코드를 시도하고 올바른 문자가있는 PDF 문서를 생성합니다.

$pdfDoc = new Zend_Pdf(); 
$pdfPage = $pdfDoc->newPage(Zend_Pdf_Page::SIZE_LETTER); 

// load TTF font from Mac system library 
$font = Zend_Pdf_Font::fontWithPath('/Library/Fonts/Times New Roman Bold.ttf'); 
$pdfPage->setFont($font, 36); 

$unicodeString = 'aąbcčdeę'; 
$pdfPage->drawText($unicodeString, 72, 720, 'UTF-8'); 

$pdfDoc->pages[] = $pdfPage; 
$pdfDoc->save('utf8.pdf'); 

참조 또한이 버그 로그 : http://framework.zend.com/issues/browse/ZF-3649

1

저는 Zend_Pdf가 1.5에서 UTF-8을 지원한다고 생각합니다 - 어떤 Zend Framework 버전을 실행하고 있습니까?

또한 어떤 글꼴로 렌더링하려고합니까? 대체 글꼴을 사용해 보셨습니까?

1

당신이 설명서에서이 예를 들어 문자 인코딩 설정되어 있는지 확인 했습니까 (나는 텍스트를 굵게 만들 수있는 유일한 방법 이잖아? 이해)? 당신이 굵은 글꼴을 사용하는 데에 붙어있는 경우

// Draw the string on the page 
$pdfPage->drawText($unicodeString, 72, 720, 'UTF-8'); 

, 어쩌면 다른 굵은 글꼴 중 하나를 시도?