代码:
using (FileStream pdf = new FileStream("C:/test.pdf", FileMode.Open))
using (FileStream xml = new FileStream("C:/test.xml", FileMode.Open))
using (FileStream filledPdf = new FileStream("C:/test_f.pdf", FileMode.Create))
{
PdfReader.unethicalreading = true;
PdfReader pdfReader = new PdfReader(pdf);
PdfStamper stamper = new PdfStamper(pdfReader, filledPdf);
stamper.AcroFields.Xfa.FillXfaForm(xml);
stamper.Close();
pdfReader.Close();
}
这段代码没有异常,一切似乎都很好,但是如果我打开填充的pdf,Adobe Reader会说这样的话:
此文档启用了扩展功能。此文档自创建以来已更改,无法再使用扩展功能。
有些字段填写正确,但我无法编辑。某些字段为空。若我通过单击Adobe Reader中的“导入数据”手动选择xml,则表单填写正确,所以我猜xml中并没有错误。
您没有正确创建PdfStamper对象。使用:
PdfStamper stamper = new PdfStamper(pdfReader, filledPdf, '\0', true)
在您的代码中,您没有在附加模式下使用PdfStamper
。这意味着iText将重新组织PDF中的不同对象。通常这不是问题。
但是:您的PDF是支持读卡器的,这意味着您的PDF是使用Adobe拥有的私钥进行数字签名的。通过重新组织PDF中的对象,该签名将被破坏。您刚才提到的信息表明了这一点:
此文档启用了扩展功能。此文档自创建以来已更改,无法再使用扩展功能。
您以一种不允许的方式更改了文档(请参阅我的书中题为“保留启用读者的表单的使用权限”的第8.7节)。
为了避免破坏签名,您需要在附加模式下使用PdfStamper。iText现在将保持原始文件的完整性,并在原始文件结束后附加新内容,而不是重新组织原始内容。
我的目标是用iText填写交互式PDF xfa表单。一切正常,但不幸的是,某些字段有JavaScript操作,我无法通过fillXfaForm()方法填充它们。我的问题是:如何以编程方式(在Java中)实现它?有可能吗? 我可以通过启用JS的Adobe Reader导入工具手动完成。 请参阅PDF表格:http://www.finanse.mf.gov.pl/documents/766655/14
我有一个基于XFA的pdf表单,我们需要使用java来填充它。你能建议最好的方法吗。我能够使用iText为pdf生成xfa xml。 我有从上面的代码生成的Pdf和Xfa XML。你能不能建议我如何继续下去,因为我似乎没有主意了。我试图检查XFA文档,但似乎不对。我没有xml,pdf非常复杂,因为它有许多字段,是一个动态XFA pdf表单。 您的帮助和建议将受到衷心的感谢。
考虑到字段名称结构可能发生了变化,我尝试像第一次那样阅读format/fields。(代码如下)。但是,现在它告诉我没有要读取的字段()。 所以,我开始做一些搜索,并找到了参考另一种类型的PDF结构,他们可以切换到;XFA.老实说,我还没有找到任何令人满意的文档/示例,但我确实找到了一些代码,看起来应该可以在XFA PDF的结构中阅读。(代码如下)。我尝试了两种不同的方法。第一个基本说明XfaFi
我需要将预填充的PDF/XFA表单设置为只读(因为在没有输入的情况下,例如文本、复选框、单选按钮等可以更改其值)。 对于常规AcroForms PDF和静态XFA表单,我可以通过在PdfStamper实例上调用setFormFlatting(true)来实现这一点。对于动态XFA表单,我必须将XDP的“字段”节点的“访问”属性设置为“只读”。 问题是,如何检测表单是否是动态XFA?不区分静态或动态
问题内容: 我试图浏览到加利福尼亚网站http://kepler.sos.ca.gov/的描述页面。但无法走。 然后,我有一个html表单,在该表单上我正在提交请求,我无法在此处添加表单,但是它只是带有必需参数的对http://kepler.sos.ca.gov/的请求 我能得到并且从我来到这里之前的页面。 我究竟做错了什么? 码: 问题答案: 您要使用。这是Jsoup的有用功能。它能够找到在表单
我创建一个列表,如下所示: 然后,我想在第一个子列表中插入10个,如下所示: 但是,我得到以下错误: 线程“main”java中出现异常。lang.IndexOutOfBoundsException:java中的索引:0,大小:0。util。ArrayList。java上的rangeCheck(ArrayList.java:653)。util。ArrayList。get(ArrayList.jav