如何通过HTTP REST请求将XDP转换为Adobe LiveCycle ES3中的PDF

时间:2013-03-15 14:42:12

标签: pdf adobe livecycle xdp

我有:LiveCycle服务器(ES3,JBOSS),Workbench,Designer。 使用LC Desginer我将PDF转换为XDP - 它现在是模板。 现在我需要将该XDP文件转换为PDF。 所以,我想我应该以某种方式通过HTTP请求调用LiveCycle服务器,在这个请求的体内我可以发送XDP文件的正文。 LC所需要的只是PDF。

看起来简单的任务,但我找不到任何信息如何做到这一点。我在Java中看到了很多如何做到这一点的例子,但我不需要Java,我需要通过HTTP(REST端点或SOAP,如果不可能)这样做。

也许我需要在Workbench中创建一些“应用程序”?如果是这样,是否有任何分步文档?或者也许有人可以解释我,如何做到这一点。也许ES3 Server中已有内置应用程序 - 我认为这是非常常见且简单的情况。

UPD:我已经在Odesk 打开了这个问题的工作,我保证在这里发布解决方案,与社区分享知识

2 个答案:

答案 0 :(得分:2)

正如所承诺的,以下是如何解决这个问题:

  1. 仅将PDF放入LiveCycle Designer是不够的。您需要在LC Designer中设计表单。您可以将PDF用作模板,但是对于您希望通过自定义数据实现的所有内容,您需要在LC Designer中添加对象(查看“插入”菜单,尝试表格或文本字段)并添加数据“数据视图”选项卡中的连接。我认为这对于专业人士来说非常简单,但初学者可能需要一些时间。保存您的工作结果,例如Template.xdp文件。
  2. 此外,您现在拥有XML文件的示例 - 数据源。我们将其命名为DataSource.xml
  3. 现在我们可以安装LiveCycle Server了。最适合LC ES3的是RHEL 5.5(我们花了大约2天时间才找到正确的操作系统和设置组合)。您需要一个聪明的系统管理员(或者只是在Adobe LiveCycle中经验丰富:))
  4. 服务器现在正在运行,你可以看到web界面,所以让我们在Adobe LiveCycle Workbench ES3中创建应用程序。添加具有新名称的应用程序并向该应用程序添加进程。描述过程的所有步骤需要很多单词,只需看一下结果的截图(以及通知变量): step 1 step 2 step 3

  5. 现在最简单的部分 - 通过HTTP请求调用此应用程序。但我们不能只发送通常的POST请求到Adobe LiveCycle :)我们必须发送2个文件(Template.xdpDataSource.xml)的内容作为multipart / form-data,部件的名称是名称输入变量(在我的例子中是xmlTemplatexmlData)。并且不要忘记具有基本授权凭证的授权标头。

  6. 在响应中,您将收到PDF文档的base64编码正文。
  7. 感谢此Thierry Stortenbeker用于此应用程序以及帮助和耐心。

答案 1 :(得分:1)

是的,您必须使用工作台创建LC应用程序。以下是如何做到这一点:

  1. 使用文件在工作台中创建一个新应用程序 - >新 - >应用。
  2. 使用应用程序中的右键菜单创建一个新流程。
  3. 从活动中删除renderPDF表单活动并将其命名为“renderPDFForm”。
  4. 选择renderPDF表单活动以使用变量的底部窗格添加变量。
  5. 添加“Document”类型的变量并将其命名为“inputXDP”。我们将使用它来传递xdp文件。将其标记为“输入”变量。
  6. 添加“Document”类型的变量并将其命名为“outPDF”。将其标记为“输出”变量。
  7. 现在双击renderPDFForm活动,这将打开左侧的属性编辑器。
  8. 如果尚未展开,请展开“输入”部分。确保从变量中选取“表单”。然后从下拉列表中选择“inputXDP”。
  9. 如果尚未展开,请展开“输出”部分。确保从变量中选取“渲染表单”。然后从下拉列表中选择“outPDF”变量。
  10. 现在通过应用程序上的右键菜单部署您的应用程序。
  11. 就是这样。你准备好了。现在保存该过程并双击“默认起始点”以获取将公开此服务的其余URL。其余网址应该看起来像 http://localhost:8080/rest/services/RestFormRender/renderForm:1.0 。这里RestFormRender是应用程序的名称,renderForm是进程的名称。现在对此REST URL进行GET / POST调用,并在“inputXDP”请求参数中指定XDP字节。