首页 文章

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

提问于
浏览
0

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

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”,以及不同的尺寸,但似乎没什么好看的 .

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

enter image description here

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

enter image description here

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

1 回答

  • 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");
          }
    

    我觉得“字体”属性是正确的方法,但我无法使用该方法 .

相关问题