1

我一直在尝试将 TextField 设置为只读但没有成功。

我试过这个:

 field.SetFieldProperty(key, "setfflags", PdfFormField.FF_READ_ONLY, Nothing)

但它会给出这个错误:“iTextSharp.text.pdf.TextField”不包含“SetFieldProperty”的定义

这是我的代码:

public void addField(PdfWriter writer, string name, int x, int y, int w, int h, PdfContentByte cb, int maxSize, string text, BaseFont font, int border)
    {
        TextField field = new iTextSharp.text.pdf.TextField(writer, new iTextSharp.text.Rectangle(x, y - h, x + w, y), name);

        field.Text = text;

        writer.AddAnnotation(field.GetTextField());
    }
4

3 回答 3

1

该方法SetFieldProperty是类的方法AcroFields(PDF 格式),而不是类的方法TextField
ATextField只有在属于Form的情况下才能只读,那么你可以通过调用方法将其设置为只读SetFieldProperty,并且知道TextFieldForm内部的key。

于 2013-04-23T07:50:38.987 回答
1

尝试这个

TextField newtext = new TextField(PDFStamper.Writer,
    new iTextSharp.text.Rectangle(590, 660, 470, 690), "txtfield");
newtext.Options = TextField.READ_ONLY;
PdfFormField field = newtext.GetTextField();
PDFStamper.AddAnnotation(field, 1);
于 2013-05-03T12:49:57.667 回答
1

请参阅我书中的TextFields示例。

可以在字段上设置不同的选项。这是使字段只读的方式:

text.Options = TextField.READ_ONLY; 

Scorpi0 给出的前一个答案没有错(我赞成这个答案),但它是更改现有表单中字段属性的解决方案。您要求更改新创建的表单中的属性。

于 2013-04-23T10:16:25.163 回答