设置带有iTextSharp问题的字体

设置带有iTextSharp问题的字体,itext,Itext,全部, 我正在尝试填写现有的PDF,无法更改字体 var filename = ConfigurationManager.AppSettings["Pdf"]; var reader = new PdfReader(AppDomain.CurrentDomain.BaseDirectory + filename); var ms = new MemoryStream(); var stamper = new PdfStamper(r

全部,

我正在尝试填写现有的PDF,无法更改字体

        var filename = ConfigurationManager.AppSettings["Pdf"];
        var reader = new PdfReader(AppDomain.CurrentDomain.BaseDirectory + filename);
        var ms = new MemoryStream();
        var stamper = new PdfStamper(reader, ms);
        using (StreamWriter sw = new StreamWriter(ms))
        {
            foreach (var key in reader.AcroFields.Fields.Keys)
            {
                stamper.AcroFields.SetFieldProperty(key, "textsize", 8.0f, null);
                stamper.AcroFields.SetFieldProperty(key, "textfont", BaseFont.HELVETICA, null);
                stamper.AcroFields.SetField(key, "some value");
            }
        }
        stamper.FormFlattening = true;
        stamper.Close();
        reader.Close();
我错过了什么?当我编译这段代码时,它在代码的“textfont”行爆炸,并说“无法将类型为“System.String”的对象强制转换为类型为“iTextSharp.text.pdf.BaseFont”

还在学这些东西

救命啊

在您设置的代码中

stamper.AcroFields.SetFieldProperty(key, "textfont", BaseFont.HELVETICA, null);
AcroFields.SetFieldProperty
属性“textfont”需要类型为
BaseFont
的值

但是
BaseFont.HELVETICA
不是一个特定的
BaseFont
实例,它是一个特定的base 14字体的名称,一个
字符串
常量

因此,当iTextSharp尝试使用您作为
BaseFont
值指定的
string
值时,在运行时会出现该异常

您可以使用以下命令检索Helvetica的
BaseFont
实例:

BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
并在
SetFieldProperty
调用中使用它而不是
BaseFont.HELVETICA

在您设置的代码中

stamper.AcroFields.SetFieldProperty(key, "textfont", BaseFont.HELVETICA, null);
AcroFields.SetFieldProperty
属性“textfont”需要类型为
BaseFont
的值

但是
BaseFont.HELVETICA
不是一个特定的
BaseFont
实例,它是一个特定的base 14字体的名称,一个
字符串
常量

因此,当iTextSharp尝试使用您作为
BaseFont
值指定的
string
值时,在运行时会出现该异常

您可以使用以下命令检索Helvetica的
BaseFont
实例:

BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
并在
SetFieldProperty
调用中使用它而不是
BaseFont.HELVETICA