6

我正在尝试使用 c# 将一些 unicode 字符(阿拉伯语)插入 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(); 
4

1 回答 1

12

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

首先,创建一个BaseFont指向您的 Unicode 字体的对象,我在下面使用 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);
于 2013-08-26T13:27:23.087 回答