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