2008-10-06 19 views
5

Tôi gặp sự cố "nhỏ" với lớp Zend Framework Zend_Pdf. Các ký tự nhiều byte bị tước khỏi các tệp pdf được tạo. Ví dụ. khi tôi viết aąbcčdeę nó trở thành abcd với các chữ cái lột hoa văn.Cách tạo các tệp pdf _with_ utf-8 các ký tự nhiều byte bằng cách sử dụng Zend Framework

Tôi không chắc chắn nếu nó đặc biệt là vấn đề Zend_Pdf hoặc php nói chung.

Văn bản nguồn được mã hóa bằng utf-8, cũng như tệp nguồn php thực hiện công việc.

Cảm ơn bạn trước sự giúp đỡ của bạn;)

P.S. Tôi chạy Zend Framework phiên bản 1.6 và tôi sử dụng phông chữ FONT_TIMES_BOLD. FONT_TIMES_ROMAN hoạt động

Trả lời

10

Zend_Pdf hỗ trợ UTF-8 trong phiên bản 1.5 của khung công tác Zend. Tuy nhiên, các phông chữ PDF chuẩn chỉ hỗ trợ bộ ký tự Latin1. Điều này có nghĩa là bạn không thể sử dụng Zend_Pdf_Font::FONT_TIMES_BOLD hoặc bất kỳ phông chữ "tích hợp" nào khác. Để sử dụng các ký tự đặc biệt, bạn phải tải một phông chữ TTF khác bao gồm các ký tự từ các bộ ký tự khác.

Tôi sử dụng Mac OS X, vì vậy tôi đã thử mã sau và nó tạo ra một tài liệu PDF với các ký tự chính xác.

$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'); 

Xem thêm này log lỗi: http://framework.zend.com/issues/browse/ZF-3649

1

Tôi tin rằng Zend_Pdf nhận hỗ trợ UTF-8 trong 1.5 - Bạn đang chạy phiên bản Zend Framework nào?

Ngoài ra - bạn đang cố hiển thị phông chữ nào? Bạn đã thử các phông chữ thay thế chưa?

0

ZF v. 1.6, TIMES_BOLD (như tôi hiểu thats cách duy nhất để làm cho văn bản in đậm?)

1

Bạn đã chắc chắn rằng bạn đang thiết lập mã hóa ký tự như ví dụ này từ thủ công?

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

Nếu bạn đang mắc kẹt vào cần phải sử dụng một phông chữ đậm, có thể thử một trong những phông chữ đậm khác?

Zend_Pdf_Font::FONT_COURIER_BOLD 
Zend_Pdf_Font::FONT_TIMES_BOLD 
Zend_Pdf_Font::FONT_HELVETICA_BOLD 
Các vấn đề liên quan