2016-08-02 99 views
0

我一直在使用PDFSharp来使用AcroForm字段填充PDF。我可以使用类似这样的代码来设置表单字段的值:无法使用PDFSharp更改AcroForm字段的字体

PdfTextField txtField = (PdfTextField)oldPDF.AcroForm.Fields["fieldname"]; 
    txtField.Value = new PdfString("my form value"); 

我的问题是,当我试图改变字体为将进入该领域的文本。我能够访问该字段的字体属性,它让我设置这样的:

txtField.Font = new XFont("Courier New", 16, XFontStyle.Bold); 

然而,当我打开保存的PDF,它默认的字体回不同的字体。我也尝试过使用其他字体,例如“Arial”或“Helvetica”,以及不同的大小,但似乎没有任何关系。

有趣过,当我打开PDF之前我就与福昕PhantomPDF改变它,我可以检查表单字段并看到字体设置为宋体

enter image description here

我填的是后PDF并保存它,然后看看这些字段,它将显示设置为Helvetica 10,无论我尝试在我的代码中设置什么字体。

enter image description here

如果我手动编辑与福昕PhantomPDF表单字段并改变这种方式,字体,它会坚持,但我想这样做的代码。这可能吗?

回答

0

不知道这是否正确,但我可以通过访问AcroForm字段字典中的“/ DA”默认apperance元素并对其进行修改来更改字体。

if(txtField.Elements.ContainsKey("/DA") == false) 
     { 
     txtField.Elements.Add("/DA", new PdfString("/CoBo 12 Tf 0 g")); 
     } 
    else 
     { 
     txtField.Elements["/DA"] = new PdfString("/CoBo 12 Tf 0 g"); 
     } 

我觉得“字体”属性是正确的方式来做到这一点,但我不能让这种方法工作。