【发布时间】:2016-01-27 18:34:52
【问题描述】:
我正在使用 PDFBox 库来填充 PDF 表单,但我无法将它们展平。我已经尝试了以下解决方案:
PDAcroForm acroForm = docCatalog.getAcroForm();
PDField field = acroForm.getField( name );
field.setReadonly(true); //Solution 1
field.getDictionary().setInt("Ff",1);//Solution 2
但似乎没有任何效果。请提出相同的解决方案。
【问题讨论】:
-
您谈论的是扁平化 PDF 表单,但提供的示例代码只是尝试将表单字段设置为只读,这与表单扁平化完全不同。那么你真正想要的是哪个?有人问,PDFBox 中的表单展平没有开箱即用的单方法调用支持,但它的低级 API 允许实现表单展平。但请注意,这是可能,而不是简单。我刚刚用谷歌搜索了一下,我看到的 PDFBox 表单展平方法大多被破坏或仅在特殊、简单的情况下有效。
-
我想在数据填充后从 Acroform 中删除可编辑字段。我只能使用 PDFBox 找到上述方法来做同样的事情,但还没有运气。
-
好的。您仅找到的代码是将字段设置为只读,而不是您想要的。正如您提到的表单是由数据填充的,我假设您希望在删除字段时该数据仍然可见。因此,在删除表单域之前,必须将表单内容复制到页面内容中。这不是微不足道的,我也没有工作代码。如果我有足够的时间,我会在以后研究它。
-
@Maruan 的回答表明 pdfbox 2.0 将包含一个显式的表单展平方法。因此,我不会尝试手动编码。
-
好的。谢谢你。如果您发现了什么,请分享。
标签: java pdf pdf-generation pdfbox