2013-08-25 17 views
6

Bazı unicode karakterlerini (Arapça) c for I for iTextSharp kitaplığı ile PDF formuna eklemeye çalışıyorum ama karakterleri eklediğimde ve karakterleri PDF dosyasına kaydettiğimde unicode karakterleri I Görünmesi gereken chracters pozisyonuna çift tıklayın.unicode karakterleriyle pdf formu doldurun

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

cevap

11

bu halledebilirim ama sonuçta sizin Unicode içeriği kılabilecek bir font belirtmek gerekir birkaç yol var.

İlk olarak, Unicode yazı işaret eden bir BaseFont nesne oluşturmak, ben kullanıyorum Arial Unicode aşağıda:

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

Sonra tek tek her alanda yazı özelliğini ayarlayabilirsiniz ya:

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

Veya belge genişliğinde bir ikame yazı tipi ekleyebilirsiniz:

pdfFormFields.AddSubstitutionFont(arialBaseFont); 
+0

pdf dosyasını bu şekilde yapın büyük o 2MB'den 17MB'a atlar. – danarj

+1

Arial Unicode MS, 50.000'den fazla glifi desteklemektedir, bu yüzden bu kadar büyüktür. PDF standardı (ve sadece iText değil), ingilizce olmayan diller için glifler ile birlikte gönderilmemektedir, böylece bir yazı tipi sağlamanız gerekir. İstediğiniz yazı tipini seçebilirsiniz, örnek olarak sadece Arial Unicode MS kullandım. –

+0

etrafında herhangi bir yolu var. – danarj