【问题标题】:Using XFDF for pdf将 XFDF 用于 pdf
【发布时间】:2009-12-28 20:38:14
【问题描述】:

有人有使用 XFDF 处理 pdf 的经验吗?使用这种方法有什么陷阱吗?

Step1 - 我需要创建一个 pdf (adobe pro),其中包含绑定到 XML 中元素的只读字段。这将充当过度数据的模板。

Step2 - 创建自定义类,从我们数据库中的数据生成 XFDF XML 字符串。

第 3 步 - 当用户请求 pdf 时,我们只需从数据库中检索数据,构造 XFDF 字符串并将字符串刷新到浏览器。

此架构决策的主要好处是无需将 pdf 存储在数据库或硬盘驱动器中。此外,我见过许多使用本地批处理过程的 pdf 生成实现,这些过程有问题,并且只在应用程序中创建另一个“移动部分”。

【问题讨论】:

    标签: java pdf-generation


    【解决方案1】:

    我一直在我的项目中使用 XFDF,并且该技术被证明是可靠且可持续的。首先,因为它是 XML,我可以压缩 XML 并以低占用空间持久存储它们。正如上面 Mark Storer 所解释的,XFDF 无法做到这一点的限制是支持脚本。如果您需要一个执行 XFDF/FDF 字段合并的库,您可以试试 [nguyen][https://github.com/joneslee85/nguyen] gem。

    【讨论】:

      【解决方案2】:

      我写了一些 XFDF,是的。你的方法听起来不错。

      您可能需要考虑 FDF 而不是 XFDF。 FDF 可以做 XFDF 不能做的事情……您可以添加脚本(在“Before”F 和“After”入口点中),并更改字段外观。 IIRC 还有一些其他的花里胡哨,但我使用的是这些。

      我们构建的 PDF 表单有很多脚本,我们的很多初始化都在“After”中进行(在“Before”中还有一些)。我们的一种不太标准的字段类型也需要能够更改字段的外观。

      这种方法的潜在问题是签名字段。您必须保存 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 支持的所有花里胡哨。

      【讨论】:

        猜你喜欢
        • 2015-08-11
        • 2013-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-05
        • 2011-01-06
        • 1970-01-01
        相关资源
        最近更新 更多