2013-08-25 10 views
6

Ich versuche, einige Unicode Charaters (arabisch) in PDF-Formular mit C# Ich verwendete iTextSharp Bibliothek, aber wenn ich die Zeichen einfügen und Zeichen in der PDF-Datei die Unicode-Zeichen nicht angezeigt werden, bis ich Doppelklicken Sie auf die Position der Zeichen, die angezeigt werden sollen.füllen PDF-Formular mit Unicode-Zeichen

string pdfTemplate = @"c:\po.pdf"; 
string newFile = @"g:\test\completed_fw4.pdf"; 
PdfReader pdfReader = new PdfReader(pdfTemplate); 
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create)); 
AcroFields pdfFormFields = pdfStamper.AcroFields; 
pdfFormFields.SetField("position", TextBox1.Text); 
pdfStamper.FormFlattening = false; 
// close the pdf 
pdfStamper.Close(); 

Antwort

11

Es gibt ein paar Möglichkeiten, wie Sie dieses Problem beheben können, aber letztlich müssen Sie eine Schriftart angeben, die von Rendern Unicode Inhalt fähig ist.

Erstellen Sie zunächst ein BaseFont Objekt in der Unicode-Schrift zeigt, ich bin mit Arial Unicode unter:

var arialFontPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF"); 
var arialBaseFont = BaseFont.CreateFont(arialFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 

Dann können Sie entweder die Schriftart-Eigenschaft auf jedes Feld individuell:

pdfFormFields.SetFieldProperty("position", "textfont", arialBaseFont, null); 

Oder Sie können eine dokumentweite Ersatzschriftart hinzufügen:

pdfFormFields.AddSubstitutionFont(arialBaseFont); 
+0

das machen die PDF-Datei so groß es springt von 2MB zu 17MB. – danarj

+1

Arial Unicode MS unterstützt mehr als 50.000 Zeichen, weshalb es so groß ist. Der PDF-Standard (und nicht nur iText) wird nicht mit Glyphen für nicht-englische Sprachen ausgeliefert, daher müssen Sie eine Schriftart bereitstellen, die dies tut. Sie können eine beliebige Schriftart auswählen, ich habe nur Arial Unicode MS als Beispiel verwendet. –

+0

ist da irgendwie herum. – danarj