这是当前的问题:我有一个由第 3 方创建的 XFA 表单,我想按原样使用它。我能够通过以下方式生成带有填充字段的 PDF:
a) Extracting the XML via Acrobat Pro
b) filling the fields within the XML and calling
XfaForm xfa = form.getXfa();
xfa.fillXfaForm(new FileInputStream(XML));
我想要做的只是在第二页上盖上一个图像/水印,它有一个带有多个字段的表单。我正在盖印的“草稿”png 图像具有透明背景,因此如果叠加层有效,图像背景应该使底层出现,并且看起来图像文本位于 pdf 页面的顶部。
如果这不是 XFA 表单,我想要完成的工作将是微不足道的。我只会使用 iText 的 pdfStamper 并在第二页上标记这个透明的 PNG,但由于我现在仅限于使用 Adobe LiveCycle Designer,我注意到在非 XFA 文档中这个曾经微不足道的任务在 XFA 中并不是那么微不足道。从之前的一篇文章中,我了解到我无法将技术混合在一起。我不得不在 nonXFA (AcroForms) 和 XFA(由 Adobe LiveCycle Designer 构建)之间做出选择。基本上,我无法在使用压模后进行 fillXFA,因此我必须弄清楚如何使用 XFA 来做到这一点。
我已经尝试了以下步骤作为静态 PDF 和动态 PDF ....PDF 的类型没有区别。
1) 在 Adobe LiveCycle Designer 中,我转到源 PDF 的第二页并定义了 2 个图像字段。
overlay1 - this will span the top portion width of the page which has text
content underneath
overlay2 - this will span the lower portion width of the page which has text
content underneath
2) 作为测试...我为 overlay1 选择了一个具有透明背景的图像,并且它的前景背景为 DRAFT 在设计时... DRAFT 透明度图像有效,并且它正确地放置在 imageField 的内容之上:覆盖1。我保存了修改后的基于 XFA 的 PDF,在 Acrobat Pro 中打开它,然后导出了 XFA XML 结构。我验证了 overlay1 将 DRAFT 图像作为 base64 编码字符串。
<overlay1 xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" xfa:contentType="image/png"
>iVBORw0KGgoAAAANSUhEUgAACWAAAAJYCAYAAADmY91UAAAACXBIWXMAAC4jAAAuIwF4pT92AABH
.......
.......
3) 当我采用相同的 base 64 字符串并且只在 overlay2 中输入它的内容并通过 fillXFA 方法渲染它时……图像是一个黑框。我也在Acrobat Pro中打开文件,然后双击imageField区域,选择透明图像,它仍然显示为一个黑框。我用一个没有透明度的图像重复了上一步,它的矩形白色背景覆盖了它下面的所有东西。
4) 我继续制作了另一张图像……没有任何透明度的图像。没有透明度的草稿,它的背景是白色的。我把它编码成base64格式。我能够将它放置在 overlay1 和 overlay2 图像字段中而没有任何问题。新问题是 DRAFT 图像的白色背景覆盖了它背后的一切。
为什么最初的透明 png 在 Adobe LifeCycle 设计(设计时)期间起作用,并且在调用 fillXFA 之后它显示为黑框?但是,如果我将图像更改为根本不使用透明度……一切正常吗?
在 xfa 填充期间,XFA 是否不支持图像字段的透明图像?请记住,当我告诉 Adobe LiveCycle 设计师将此透明 png 用于该字段时,它在设计期间起作用。
我基本上是在尝试在 XFA pdf 中的特定页面上创建 2 个图像水印。
我目前的备份计划是展平 PDF(取下 XFA)并使用 Acrobat Pro 将所有字段放回表单上,并使用标准 PDF itext 调用和使用压模填充它(这将是乏味的,因为有一堆字段)。但我想知道在我查看选项 B 之前是否有人必须使用 XFA PDF 表单做同样的事情。