2016-08-11 77 views
0

我有一个带有按钮字段的PDF模板文件。比方说,“Button1”中按钮字段的名称。是否可以使用iText(v5.5)从我的Java应用程序中隐藏此按钮?在PDF中设置字段的可见属性

+0

你正在使用哪个版本?提供的答案假定您正在使用iText 7.请修复您的第一句话。说你有*静态PDF *和*按钮字段*是矛盾的。 A *静态PDF *是没有表格的PDF。 *按钮字段*表示PDF包含表单(因此不是静态的)。如果您是从头开始创建('PdfWriter'),或者您正在讨论现有的PDF('PdfReader'),您也不会提及。只要你不显示任何代码,我们甚至不能猜测。 –

+0

对不起,我应该更清楚了。我已经更新了这个问题。任何想法如何在5.5版本中做到这一点? –

回答

0

请大家看看HideButton例子。在这个例子中,我们采取了一个名为hello_button.java PDF具有一个名为​​按钮(在屏幕截图的灰色区域):

enter image description here

字段名称为"Text"对应一个Widget注释。我们可以改变这个注释的标志是这样的:

PdfReader reader = new PdfReader(src); 
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); 
AcroFields form = stamper.getAcroFields(); 
form.setFieldProperty("Test", "setflags", PdfAnnotation.FLAGS_HIDDEN, null); 
stamper.close(); 

这种操作的结果是一个名为hello_button_hidden.pdf文件:

enter image description here

这是iText的5答案;另一个答案是iText 7的答案。

+0

非常好,谢谢你的详细解答! –

1

PDFFormField.setVisibility(int visibility)PDFAcroForm.getField(String fieldName)

您的代码将是这个样子:

pdfAcroform.getField("Button1").setVisibility(PDFFormField.HIDDEN); 
+0

这是一个iText 7的答案。 OP没有提及他是否使用iText 7(在这种情况下,你的答案会帮助他)或iText 5(在这种情况下需要不同的答案)。目前还不清楚*静态PDF *的含义。通常静态PDF意味着它不包含任何表单域。但是,这与有按钮字段的声明相矛盾。您正试图为一个坏问题提供一个很好的答案;-) –

+0

感谢Amber,正如Bruno所提到的,这在Itext v5.5中是不可能的...... –

+0

它可能在iText 5.5中,但代码不同。 –