【问题标题】:Set visible property of fields in a PDF设置 PDF 中字段的可见属性
【发布时间】:2016-12-18 10:56:09
【问题描述】:

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

【问题讨论】:

  • 您使用的是哪个版本?提供的答案假设您使用的是 iText 7。请修正您的第一句话。说你有一个带有 button fieldstatic PDF 是矛盾的。 静态 PDF 是没有表单的 PDF。 按钮字段 意味着 PDF 包含一个表单(因此不是静态的)。您也没有提及您是从头开始创建 (PdfWriter) 还是在谈论现有的 PDF (PdfReader)。只要你不显示任何代码,我们甚至无法猜测。
  • 对不起,我应该更清楚。我已经更新了这个问题。知道我们如何在 v 5.5 中做到这一点吗?

标签: java pdf itext acrobat


【解决方案1】:

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

您的代码将如下所示:

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

【讨论】:

  • 这是一个 iText 7 的答案。 OP 没有提到他是使用 iText 7(在这种情况下您的答案会对他有所帮助)还是 iText 5(在这种情况下需要不同的答案)。 静态 PDF 的含义也不清楚。通常静态 PDF 意味着它不包含任何表单域。但是,这与存在按钮字段的说法相矛盾。你试图为一个不好的问题提供一个好的答案;-)
  • 在 iText 5.5 中可以,但代码不同。
【解决方案2】:

请查看HideButton 示例。在本例中,我们采用名为 hello_button.java 的 PDF 文件,其中包含一个名为 "Test" 的按钮(屏幕截图中的灰色区域):

名称为"Text" 的字段对应一个小部件注释。我们可以像这样改变这个注解的标志:

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的文件:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 2019-10-06
    相关资源
    最近更新 更多