用unicode字符填写pdf表单

我试图用c#插入一些unicode charaters(arabic)到PDF格式我使用了iTextSharp库但是当我插入字符并在PDF文件中保存字符时,unicode字符才会显示,直到我双击字符的位置应该出现。

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

有几种方法可以解决这个问题,但最终您需要指定一种能够呈现Unicode内容的字体。

首先,创建一个指向Unicode字体的BaseFont对象,我在下面使用Arial Unicode:

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

然后,您可以单独设置每个字段的字体属性:

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

或者您可以添加文档范围的替换字体:

 pdfFormFields.AddSubstitutionFont(arialBaseFont);