我有一个用Adobe LiveCycle Designer 8.0创建的pdf表单,其中有几个文本字段,其中包含用于添加,查看和删除文件附件的按钮,我正在尝试使用PDFBox(2.0.9)自动填充表单。我从pdf的xfa找到了xfa:datasets节点,然后用新的xml替换了xfa:data节点,然后我添加了附件并保存了文档。
我能够在文档中看到我的附件,但在文本字段中看不到文件名。这个过程适用于其他pdf表单,但不适用于使用LiveCycle制作的表格,我不确定我是否缺少任何其他步骤。
以下是代码:
PDDocument doc = null;
doc = PDDocument.load(new File(srcFile));
PDAcroForm aform = doc.getDocumentCatalog().getAcroForm();
PDXFAResource xfa = aform.getXFA();
org.w3c.dom.Document xmlDoc = xfa.getDocument();
//I find the data node under datasets node in xmlDoc
//and replace it with new xml for the attachment
xmlDoc = prepareXFAForm(xmlAttachment, xmlDoc);
//replace the XFA with modified xml
COSStream cs = doc.getDocument().createCOSStream();
OutputStream os = cs.createOutputStream(COSName.FLATE_DECODE);
Result outputTarget = new StreamResult(os);
Transformer t = TransformerFactory.newInstance().newTransformer();
t.transform(new DOMSource(xmlDoc), outputTarget);
PDXFAResource resout = new PDXFAResource(cs);
aform.setXFA(resout);
os.close();
//add attachments
PDDocumentNameDictionary names =
new PDDocumentNameDictionary(doc.getDocumentCatalog() );
names.setEmbeddedFiles( efTree );
doc.getDocumentCatalog().setNames( names );
doc.save(destFile);
任何帮助将不胜感激!