2012-08-14 41 views
5

Tôi gặp sự cố với một số ký tự tiếng slovak đặc biệt (ví dụ č, ň và ť). Họ đang biến mất trong pdf được tạo ra itextsharp.iTextSharp và các ký tự đặc biệt (biểu đồ slovak)

Từ những gì tôi đã có thể tìm thấy, vấn đề này liên quan đến việc mã hóa số BaseFont của tôi. Hiện nay tôi đang sử dụng này:

BaseFont.CreateFont(BaseFont.HELVETICA, iTextSharp.text.pdf.BaseFont.CP1250, BaseFont.NOT_EMBEDDED) 

Có người cho rằng điều này sẽ làm việc:

BaseFont.CreateFont(BaseFont.HELVETICA, iTextSharp.text.pdf.BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED) 

Nhưng nó throws lỗi ngoại lệ này:

System.ArgumentException was caught 
Message='Identity-H' is not a supported encoding name. 
Parameter name: name 
ParamName=name 
Source=mscorlib 

Bất cứ ai biết một lý do có thể và giải pháp này ?

+0

Tại sao bạn phải viết xuống? – Muleskinner

Trả lời

12

Vấn đề là ở đây:

BaseFont.CreateFont(BaseFont.HELVETICA ... 

BaseFont.HELVETICA là một standard type 1 font và không thể được sử dụng cho các ký tự slovak của bạn. Bạn cần phải sử dụng phông chữ có hình dạng chính xác:

string FONT = "c:/windows/fonts/arialbd.ttf"; 
using (Document document = new Document()) { 
    PdfWriter.GetInstance(document, STREAM); 
    document.Open(); 
    BaseFont bf = BaseFont.CreateFont(
    FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED 
); 
    document.Add(new Paragraph("č, ň and ť", new Font(bf, 12))); 
}