我需要在.pdf中插入.xml(然后对所有数字进行数字签名)。
我要遵循的实施指南告诉我,插入我的xml数据以填充名为“XFAResources”的结构,如在本示例中可以看到的(我的数据包含在ClinicalDocument块中):

<Xfa: datasets xmlns: xfa = "http://www.xfa.org/schema/xfa-data/1.0/">
   <Xfa: date>
     <ClinicalDocument xmlns = "urn: hl7-org: v3" ...>
      ...
     </ClinicalDocument>
   </Xfa: date>
</Xfa: datasets>

有人可以给我一些有关我该怎么做的信息吗?
PDF都是我生成的xml,第二个使用iText5。

-更新-

我需要执行插入,注入,PDF中的XML的工作,我必须为一个论文项目完成这项工作,而给我的唯一“限制”就是编程语言,恰恰是Java,其余的完全自由。

因此,我使用Eclipse创建/保存了我的XML,并使用iText创建/保存了不是XFA表单的PDF(具有我决定的内容和格式),现在我必须进行注入。

老师今天早上也告诉我,文件的最终签名不是必需的。

然后,您能推荐一种简单的注射方法吗?我相信通过iText是可行的,但是不幸的是我不明白如何做到。

预先感谢您的可用性。

最佳答案

您指的是XFAResources。 ISO-32000-1(又称为当前PDF规范)中没有XFAResources这样的东西。 XFAResources是在ISO-32000-2的早期草案之一(又名PDF 2.0,将于今年晚些时候发布)中引入的,但在新规范的开发过程中已将其删除。它不在FDIS(国际最终草案)中,这意味着它永远不会成为正式规范的一部分。

简而言之:您遵循的实施指南是错误的。如果(1.)您共享了该实施指南,并且(2.)要求其作者对其进行修改以使其反映官方标准,这将有所帮助。

至于你的问题:

  • 我假设您具有使用Adobe LiveCycle Designer创建的XFA表单,并且您想将XML注入该表单中。之前曾有人问过这个问题:How to fill out a pdf file programmatically? (Dynamic XFA)
  • 您要签署表单,并在PAdES-5:XML内容的PAdES – PDF文件中XML内容的XAdES签名的配置文件中描述了签署XFA表单。这是在iText中实现的,但不幸的是,我不知道其他任何实现。据我所知,Adobe具有完全不同的实现方式,这使得无法在Adobe Reader中验证使用iText创建的PAdES-5(如果仍然存在,请与Adobe确认)。没有其他查看器支持PAdES-5,XFA将在PDF 2.0中弃用(这大大降低了任何供应商投资于进一步开发的机会)。
  • 您不想签署表单,但是想要签署扁平化表单。在这种情况下,您首先需要将XFA转换为真实的PDF。 XFA表单不过是包装在PDF结构中的XML,您需要Adobe LiveCycle ES或iText的XFA Worker之类的软件才能将XML转换为常规PDF。这是非常专业的软件,不能作为开源软件使用。考虑到XFA将被弃用的事实,几乎没有任何人会努力创建开源软件之类的软件。但是,如果您购买Adobe LiveCycle ES或iText的XFA Worker,则可以创建可以使用PAdES-2(ISO-32000-1样式)或PAdES-3(ISO-32000- 2)签名。

  • 您在StackOverflow上问您的其他订阅者:“有人可以给我一些有关如何做的信息吗?”希望以上信息已经为您指明了相关规范(ISO-32000-1和-2,PAdES-2,-3和-5),但是很遗憾,无法给您提供代码示例,因为您的问题由于以下原因不够准确:
  • 您需要填充一个称为XFAResources的结构的假设是基于实现指南的,该指南指的是从未使其成为正式标准的结构。
  • 您对模板的性质尚不完全清楚:它真的是XFA表单吗?如果是这样,为什么? XFA表单即将过时。
  • 您对签名结果的性质尚不完全清楚:文档是否需要保留XFA表单(PAdES-5),还是可以将文档弄平?
  • 10-06 10:37