【问题标题】:Unable to change font on an AcroForm field with PDFSharp无法使用 PDFSharp 更改 AcroForm 字段上的字体
【发布时间】:2016-12-08 00:53:45
【问题描述】:

我一直在使用 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

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

如果我使用 Foxit PhantomPDF 手动编辑表单字段并以这种方式更改字体,它将保持不变,但我想在代码中进行。这可能吗?

【问题讨论】:

    标签: c# .net pdf pdfsharp


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多