2013-05-30 59 views
5

Tôi đang sử dụng iText để tạo tệp PDF có ký tự tiếng Trung. Font tôi đã chỉ định là MS Mincho mà tôi đã nạp bằng cách sử dụng mã,iText để tạo PDF với các ký tự tiếng Trung, nhưng không được hiển thị

FontFactory.registerDirectory("c:/windows/Fonts/"); 

new Phrase("Asian 汉字/漢字 characters", FontFactory.getFont("MS Mincho", 16, Font.NORMAL)); 

Đoạn code dưới đây lấy một cách thích hợp font MS Mincho (tức là không null),

FontFactory.getFont("MS Mincho", 16, Font.NORMAL) 

Tuy nhiên, tạo ra PDF chỉ hiển thị văn bản ASCII "ký tự Châu Á", tức là các ký tự tiếng Trung không được hiển thị trên PDF.

Bất kỳ ý tưởng nào về lý do tại sao các ký tự tiếng Trung bị thiếu trên tệp PDF được tạo?

+1

Bạn nên chắc chắn rằng bạn a) sử dụng phông chữ với một thích hợp [mã hóa] (http://itextpdf.com/themes/keyword.php?id=394) ('BaseFont.IDENTITY_H') và b) [embed] (http://itextpdf.com/themes/keyword.php?id=71) nó (' BaseFont.EMBEDDED'). Lấy cảm hứng từ các mẫu từ [chaptrer 11] (http://itextpdf.com/book/chapter.php?id=11) của [iText in Action - 2nd Edition] (http://itextpdf.com/book/) . – mkl

+1

Cảm ơn. PDF được tạo bây giờ hiển thị các ký tự Trung Quốc đúng cách. Không cần phải gọi FontFactory.registerDirectory(). Chỉ cần sử dụng BaseFont.createFont ("c: /windows/Fonts/MSMINCHO.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED) và khởi tạo Phông chữ (BaseFont, kích thước). FontFactory.getFont ("MS Mincho") không hoạt động với các ký tự Trung Quốc. –

+1

Thực tế 'FontFactory' có thể được sử dụng để tạo các đối tượng phông chữ được tham số thích hợp. Nhưng đúng, bạn không cần nó. – mkl

Trả lời

2

Như vấn đề đã được giải quyết trong các ý kiến, đây là độ phân giải:

Bạn nên chắc chắn rằng bạn a) sử dụng phông chữ với một thích hợp encoding (BaseFont.IDENTITY_H) và b) embed nó (BaseFont.EMBEDDED). Được lấy cảm hứng từ số samples from chapter 11 của iText in Action — 2nd Edition.

BaseFont bf = BaseFont.createFont("c:/windows/Fonts/MSMINCHO.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
Font f = Font(bf, size); 

Bây giờ sử dụng này Font f.

Các vấn đề liên quan