在将可见性设置为HIDDEN

时间:2018-04-17 14:58:17

标签: pdf itext itext7

我正在使用带参数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页上的复选框及其对应文本。(人类主题)

Link to PDF file

1 个答案:

答案 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编辑器工具以编程方式实现。