当前位置: 首页 > 知识库问答 >
问题:

如何使用Adobe LiveCycle API创建具有固定页面的交互式表单?

郦祺
2023-03-14

当我尝试使用Adobe LiveCycle ES4 Designer打开常规PDF(不包含XFA表单)时,它会提示一个窗口(新表单助手),并要求我选择如何使用PDF。选项包括:

  • 创建具有固定页面的交互式表单
  • 创建具有可流动布局的交互式表单

我选择第一个并继续。然后,我不做任何事情就保存文件(使用另存为)。另存为类型是“Acrobat(Static)PDF Form(. pdf)*”,事实上这是这种情况的唯一选择。保存文件后,我发现,虽然两个文件在PDF阅读器中视觉上是相同的,但保存的文件和原始文件是不同的,因此,保存的文件包含XFA表单。在我的例子中,XFA表单如下:

<topmostSubform xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" xfa:dataNode="dataGroup"/>

关于这一点,我有两个问题。

  1. 我是否可以使用API打开常规PDF并向其中添加XFA表单,而不会损坏原始PDF内容

简而言之,我想做的是将一个填充的XFA表单添加到一个常规PDF中,我想问一下,是否可以使用API?

共有2个答案

帅德惠
2023-03-14

当您选择“使用固定页面创建交互式表单”时,从概念上讲,您正在现有PDF上创建XFA“覆盖”。您可以添加字段,但不能添加样板。

预期的用例是,您有一个PDF格式的现有纸质表单,并且您希望快速向其添加字段以使其具有交互性。您本质上是用一些额外的XFA功能来增强现有的PDF。由于艺术品仍然是PDF格式,因此它没有发生任何转换,并且它与原始未更改的文档保持相同。但是,您并没有创建真正的XFA表单,因为只有字段以XFA格式定义,因此您无法将其存储为XDP。它只能重新保存为PDF。此外,由于PDF图稿没有分解为可移动的部分(即子表单),因此表单无法动态增长/收缩。这就是为什么它只能保存为静态PDF。请参阅此处和此处的Adobe LiveCycle Designer帮助。

当您选择“创建具有可流动布局的交互式表单”时,Designer正在将PDF转换为XFA XML格式。您可以与设计进行交互,就像您使用LiveCycle Designer从头开始创建所有内容一样。

由于这种方法实际上是将PDF图片转换为XML,因此很有可能某些图片的转换不完全相同。它可能需要一些手动修复,以使表单看起来与以前完全一样。一些复杂的PDF可能根本转换不好。字体可能不可用等。这里的Adobe LiveCycle Designer帮助中也介绍了这一点。

后一种方法的好处是您有一个完整的XFA表单定义,可以在任何可以使用LiveCycle Designer中从头开始开发的表单的地方使用。可以对其进行修改以添加增长或收缩以匹配数据的动态部分。基于XFA的表单的全部表达能力被打开。

WRT您的问题:

>

  • 您可以打开常规PDF并将XFA字段添加到表单中。然后,您可以使用这些字段捕获数据并将该数据保存为XML数据。

    您还可以添加不可见的XFA字段。

  • 浦德义
    2023-03-14

    Adobe LiveCycle中没有允许您将XFAF(XFA Foreground)表单插入PDF的API。

    然而,使用各种PDF库应该是可行的。您需要创建要添加的表单,然后使用PDF库(如iText、PDFBox或Big Faceless)将其插入PDF。然而,插入有点棘手,因为XDP在PDF中被分为多个部分。我将使用LiveCycle Designer生成一个XFAF PDF,然后使用您打算使用的相同PDF库对其进行检查。

    XFAF概要文件中没有明确排除presence属性,因此不可见字段应该可以工作,但是我将首先使用LiveCycle Designer对其进行测试。如果您将不可见字段添加到固定页面PDF中,并且效果良好(即,您测试生成的PDF-我毫不怀疑它将允许您添加它们,但可能不会使它们不可见),那么您应该能够使用编程构造的XFAF PDF来模拟这一点。

    只是提醒一下。这不是我认为LiveCycle Designer团队之外的许多人都尝试过的。如果你沿着这条路走下去,你将开辟新的道路。

     类似资料:
    • 我正在研究为我们的客户报告工具创建PDF报告的不同方法。我找到了这个链接,他们可以在PDF文档上执行操作和表单。有可能以编程方式生成这些PDF吗?比如有没有API可以创建这样的PDF? 我使用过apache POI和iText,但它没有这些功能。有没有人遇到过任何开源或商业工具用于此目的? 我的主要目标用户将是iPad用户。因此在objective c中使用此API也会有所帮助。

    • WeX5的前端是由若干个页面构成的,运行时,页面间有以下几种关系:Shell打开页面、页面与对话框的交互、页面与内嵌页面的交互。 Shell打开页面 WeX5中,Shell负责管理所有的页面;在同一时刻,允许多个页面同时运行,有且只有一个活动页面(即当前页面)。 配合 参考案例 :/UI2/demo/page/index.w 1、打开页面 打开页面时,可以调用以下api: justep.Shell

    • 我正在尝试构建一个极其简单的广播流应用程序,它存储一个web广播URL列表,可以选择这些URL来流式传输音频;使用服务允许在应用程序未处于活动状态时继续播放,以避免收到通知。 我需要的控件非常简单:播放/暂停和停止,当清除通知或在应用程序中按下停止按钮时,这些控件应该会终止服务并被诱导。 我为大量代码道歉,但这就是我的目的: 这是从谷歌的媒体播放讲座、Android文档、UAMP等示例应用程序和其

    • 标题说明了一切。我想创建一个自定义的prestashop页面,但我不知道如何创建。我真正想做的是:创建一个按钮,打开一个自定义页面。我在网上找不到任何有用的东西,所以我来这里寻求帮助。有人能告诉我怎么做吗?

    • 我必须创建一个询问 我试图解决的任何一个项目在一个列表中,我有一些问题,这里是一个代码 `此代码仅在以下情况下提供预期输出: 如果len(list)可被page_number整除,如果page_number为0,或如果page_number大于并等于len(list)` 臭虫 假设len(list)是9,page_number是(2,4,5,6,7,8)之一,9%(2,4,5,6,7,8)的剩余部

    • 问题内容: 是否有跨浏览器的CSS / JavaScript技术来显示较长的HTML表,以使列标题在屏幕上保持固定并且不随表主体滚动。考虑一下Microsoft Excel中的“冻结窗格”效果。 我希望能够滚动浏览表的内容,但始终能够看到顶部的列标题。 问题答案: 一段时间以来,我一直在寻找解决方案,但发现大多数答案都不起作用或不适合我的情况,因此我用jQuery写了一个简单的解决方案。 这是解决