将itextsharp文本字段设置为只读

时间:2013-04-23 07:31:33

标签: c# itextsharp textfield

我一直在尝试将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());
    }

3 个答案:

答案 0 :(得分:1)

方法SetFieldProperty是类AcroFields(PDF格式)的方法,而不是类TextField的方法。
TextField只有在属于某个表单时才能只读,然后您可以通过调用方法SetFieldProperty并通过知道表单中TextField的键来将其设置为只读

答案 1 :(得分:1)

请参阅TextFields中的my book示例。

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

text.Options = TextField.READ_ONLY; 

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

答案 2 :(得分: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);