2012-10-17 26 views
6

Tôi có một số file phông chữ tùy chỉnh của Trung Quốc:Làm cách nào để biết mã hóa chính xác khi tôi gọi BaseFont.createFont() bằng itext?

aaa.ttf 
bbb.ttf 
ccc.ttf 

Và tôi muốn sử dụng chúng để tạo pdf của tôi với iText.

Đây là mã tôi sử dụng để tạo ra một BaseFont:

String encoding = ??? 
BaseFont messageBaseFont = BaseFont.createFont("fonts/aaa.ttf", 
           encoding, 
           BaseFont.EMBEDDED); 

Nhưng tôi không biết làm thế nào để tìm ra encoding. Hãy aaa.ttf ví dụ:

enter image description here

Tôi có thể tìm thấy những encoding từ những thông tin? Tôi đã thử một số mã hóa như BaseFont.CP1252 hoặc BaseFont.WINANSI, nhưng chúng không hoạt động, đầu ra là trang trống hoặc nhiều ký tự ?????? nếu chúng là ký tự tiếng Trung.

Trả lời

8

Có nhiều câu trả lời khác nhau cho câu hỏi này. Đối với một cái nhìn tổng quan đầy đủ, bạn có thể đọc chương 11 của cuốn sách của tôi, "iText in Action", nhưng nếu bạn chỉ muốn an toàn, hãy sử dụng Identity-H cho văn bản nằm ngang (và Identity-V). Đây không thực sự là một mã hóa, nhưng nó sẽ tạo ra một phông chữ tổng hợp trong PDF sử dụng Unicode: http://api.itextpdf.com/itext/com/itextpdf/text/pdf/BaseFont.html#IDENTITY_H

+0

Cảm ơn sự giúp đỡ của bạn, tác giả của nó. Tôi vừa thử 'IDENTITY_H' và tìm thấy các ký tự có thể được hiển thị chính xác trong pdf. – Freewind

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