我写了一些XFDF,是的。你的方法听起来不错。
您可能想要考虑FDF而不是XFDF。 FDF可以做XFDF不能做的事......你可以添加脚本(在“之前”和“之后”入口点),并改变字段外观。 IIRC还有一些其他的花招和口哨声,但那些是我使用的。
我们构建的PDF表格有很多脚本,它们很多,我们的初始化在“After”之后进行(在“Before”之前有几位)。我们其中一个不太标准的字段类型也需要改变字段外观的能力。
这种方法的潜在问题是Signature Fields。您必须保存PDF以保留签名有效性。然而,您可以使用这个工具...只需保存这些PDF,并且当有人请求特定实例时,您将[X] FDF指向签名形式而不是未签名模板。
FDF没有比XML更难编写的。它使用PDF的语法,不需要外部参照表和不同的根对象/布局。
%FDF-1.2
1 0 obj
<</FDF
<</Fields [
<</T(name1)/V(value1)>>
<< /T (name2) /V (value2) >>
<</T(list1) /Opt [ [(display1)(value1)] [(display2)(value2)] ] /v(value2) >>
...
]
/F (pathOrURLtoForm.pdf)
/JavaScript <<
/Before (var foo = "blah";)
/After(someFunc/(/);)
>>
>>
>>
endobj
trailer
<</Root 1 0 R>>
%%EOF
在不同的地方有一些逃跑,但总的来说很简单。 iText有一个FDFWriter类,可以为你完成大部分工作,但我不相信它支持FDF支持的所有功能。