2016-08-11 74 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中,但代碼不同。 –