2012-08-14 17 views
5

Ich habe Probleme mit einigen speziellen slowakischen Zeichen (zB č, ň und ť). Sie verschwinden im iterxsharp generierten pdf.iTextSharp und Sonderzeichen (slowakische Grapheme)

Von dem, was ich gefunden habe, hat dieses Problem mit der Codierung meiner BaseFont zu tun. Derzeit bin ich mit dieser:

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

Jemand schlug vor, dass dies funktionieren sollte:

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

Aber es wirft diese Ausnahmefehler:

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

Wer weiß, einen möglichen Grund und Lösung dieses Problems ?

+0

Warum der Downvote? – Muleskinner

Antwort

12

Das Problem ist hier:

BaseFont.CreateFont(BaseFont.HELVETICA ... 

BaseFont.HELVETICA ein standard type 1 font ist und nicht für die slowakisch Zeichen verwendet werden kann. Sie müssen eine Schriftart mit den richtigen Zeichen verwenden:

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))); 
}