当前位置: 首页 > 知识库问答 >
问题:

使用iText检测动态XFA

费朗
2023-03-14

我需要将预填充的PDF/XFA表单设置为只读(因为在没有输入的情况下,例如文本、复选框、单选按钮等可以更改其值)。

对于常规AcroForms PDF和静态XFA表单,我可以通过在PdfStamper实例上调用setFormFlatting(true)来实现这一点。对于动态XFA表单,我必须将XDP的“字段”节点的“访问”属性设置为“只读”。

问题是,如何检测表单是否是动态XFA?isXfaPresent不区分静态或动态XFA表单,因此没有用。

共有2个答案

丁晋
2023-03-14

iText像言论自由一样自由,而不像免费啤酒那样自由。阅读http://lowagie.com/bumodels有关我们为避免从MPL/LGPL切换到AGPL而尝试的业务模型的更多信息。

问题1:使动态XFA表单只读

对于最新版本的iText来说,这一点很容易理解,但您使用的过时版本不支持这一点。请阅读http://lowagie.com/itext2找出为什么不应该使用iText 4.2.0(据我所知,它甚至不是官方版本;我知道,因为我负责每个iText版本)。也许你说的是iTextSharp。

问题2:展平动态XFA表单

如果你想展平一个动态XFA表单,你有两个选择:要么使用Adobe LiveCycle ES(这将花费你一条胳膊和一条腿),要么使用iText的XFA Worker(这是一个建立在F/OSS iText之上的便宜得多的闭源产品)。考虑到这个产品的成本和人工小时数,我认为你找不到像免费啤酒那样免费的解决方案。就我个人而言,我不知道有任何这样的产品。

Q3:如何确定XFA表单是否是动态的

这在我的书《iText in Action-Second Edition》中有解释您已经有了一半的解决方案。条件1:isXfaPresent()需要返回true。条件2:getFields()需要设置一个空键。请参见本例中的方法readFieldnames()。

祖利
2023-03-14

要添加到Bruno的答案并提供C#示例代码:

PdfReader reader = new PdfReader(filePath);
XfaForm xfa = new XfaForm(reader);

//Check if PDF file contains Dynamic XFA data
if (xfa != null && xfa.XfaPresent && xfa.Reader.AcroFields.Fields.Keys.Count == 0)
{
   MessageBox.Show("This PDF contains Dynamic XFA data.");
}
 类似资料:
  • Hibernate 的用户曾要求一个既可自动分配新持久化标识(identifier)保存瞬时(transient)对象,又可更新/重新关联脱管(detached)实例的通用方法。saveOrUpdate() 方法实现了这个功能。 // in the first session Cat cat = (Cat) firstSession.load(Cat.class, catID); // in a

  • 我有一个基于XFA的pdf表单,我们需要使用java来填充它。你能建议最好的方法吗。我能够使用iText为pdf生成xfa xml。 我有从上面的代码生成的Pdf和Xfa XML。你能不能建议我如何继续下去,因为我似乎没有主意了。我试图检查XFA文档,但似乎不对。我没有xml,pdf非常复杂,因为它有许多字段,是一个动态XFA pdf表单。 您的帮助和建议将受到衷心的感谢。

  • 我正在尝试使用EventHandlers使用itext7创建动态页面标题。我正在为此使用以下代码: 在这里,我创建了“VariableHeaderEventHandler”,它为文档的每一页呈现动态页眉。 最初,我将页面标题设置为“第一个标题”,并将文本“添加第一个内容”添加到文档中50次。然后我添加了区域分隔符,在渲染之前的内容后,该分隔符将使页面的另一部分是空的,任何进一步的内容都将在新页面中

  • 本文向大家介绍Android 中使用 dlib+opencv 实现动态人脸检测功能,包括了Android 中使用 dlib+opencv 实现动态人脸检测功能的使用技巧和注意事项,需要的朋友参考一下 1 概述 完成 Android 相机预览功能以后,在此基础上我使用 dlib 与 opencv 库做了一个关于人脸检测的 demo。该 demo 在相机预览过程中对人脸进行实时检测,并将检测到的人脸用

  • null 但问题是,如果主题是动态创建的(我的意思是说在使用者代码启动之后),它将不起作用,但API说它将支持动态主题创建。这里是供你参考的链接。 Kafka版本:0.9.0.1 https://kafka.apache.org/090/javadoc/index.html?org/apache/kafka/clients/consumer/kafkaConsumer.html 任何帮助都是非常感

  • 问题内容: 谁能帮我这个。 我想检测Iphone,BB,andriod等设备以及浏览器,以应用其特定的CSS使其液化或调整其分辨率。 在移动浏览器上,andriod和Iphone是否存在分辨率差异问题或CSS问题,因为我计划为这2个用户使用相同的CSS,因为我知道它们默认使用相同的浏览器浏览器。 问题答案: 尝试使用并检查字段。当然,只有在php.ini中设置了路径时,它才可能有所帮助。如果没有,