无法使用PDFSharp更改AcroForm字段上的字体

时间:2016-08-02 15:13:19

标签: c# .net pdf pdfsharp

我一直在使用PDFSharp来填写AcroForm字段的PDF。我可以使用类似于此的一些代码来设置表单字段的值:

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

我遇到的问题是当我尝试更改将进入该字段的文本的字体时。我可以访问该字段的font属性,它允许我这样设置:

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

但是,当我打开已保存的PDF时,它会将字体默认为不同的字体。我也尝试过使用其他字体,例如" Arial"或者" Helvetica",以及不同的尺寸,但似乎没有什么可以坚持下去。

有趣的是,当我在使用Foxit PhantomPDF对其进行更改之前打开PDF时,我可以检查表单字段并看到字体设置为Times New Roman

enter image description here

在我填写PDF并保存之后,查看字段并显示设置为Helvetica 10,无论我尝试在代码中设置什么字体。

enter image description here

如果我使用Foxit PhantomPDF手动编辑表单字段并更改字体,它会坚持,但我想在代码中执行此操作。这可能吗?

1 个答案:

答案 0 :(得分:0)

不确定这是否正确,但我可以通过访问" / DA"来更改字体。 AcroForm字段字典中的默认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");
      }

我觉得"字体"属性是执行此操作的正确方法,但我无法使用该方法。