我正在使用带参数setVisibility()
的{{1}}方法将PdfFormField的可见性设置为HIDDEN。尽管如此,在平坦化的时候,这个领域并没有隐藏起来。以下是执行此操作的代码。
PdfFormField.HIDDEN
将字段值设置为空字符串File file = new File("path to PDF file");
baos = new ByteArrayOutputStream();
pdfDoc = new PdfDocument(new PdfReader(file.getAbsolutePath()), new PdfWriter("path to flattened PDF file"));
//This function removes all the permissions.
removePdfPermissions();
form = PdfAcroForm.getAcroForm(pdfDoc, true);
fields = form.getFormFields();
fields.get("HumanSubjectsText").setVisibility(PdfFormField.HIDDEN);
fields.get("HumanSubjects").setVisibility(PdfFormField.HIDDEN);
form.flattenFields();
pdfDoc.close();
是一种解决方法,但不是正确的方法。
字段""
和"HumanSubjects"
对应于第2页上的复选框及其对应文本。(人类主题)
答案 0 :(得分:0)
使用iText库无法隐藏字段。与Bruno的评论相反,iText库中的一种方法效果很好,setValue()
。我不太确定setVisibility()
失败的原因。
但是,我可以使用Master PDF editor工具隐藏字段。我附上了此工具的屏幕截图,您可以在其中更改General
标签中表单字段的可见性。
观察:在com.itextpdf.forms.fields.PdfFormField
中定义的一些常数如下:
public static final int HIDDEN = 1;
public static final int VISIBLE_BUT_DOES_NOT_PRINT = 2;
public static final int HIDDEN_BUT_PRINTABLE = 3;
public static final int VISIBLE = 4;
Master PDF editor也有类似隐藏字段的选项。请参阅随附的屏幕截图。
注意:我的要求只是隐藏字段。它可以通过使用像iText
这样的库或一些PDF编辑器工具以编程方式实现。