使用汇编程序服务的XDP拼接

本文提供了用于展示使用汇编程序服务拼接xdp文档这一能力的宝贵资源。
编写了以下jsp代码,以将xdp文档(名为address.xdp)中名为​ address ​的子表单插入到master.xdp文档中名为​ address ​的插入点中。 生成的xdp已保存在AEM安装的根文件夹中。

汇编程序服务依赖于有效的DDX文档来描述PDF文档的操作。 您可以在此参阅DDX参考文档。第40页包含有关xdp拼接的信息。

    javax.servlet.http.Part ddxFile = request.getPart("xdpstitching.ddx");
    System.out.println("Got DDX");
    java.io.InputStream ddxIS = ddxFile.getInputStream();
    com.adobe.aemfd.docmanager.Document ddxDocument = new com.adobe.aemfd.docmanager.Document(ddxIS);
    javax.servlet.http.Part masterXdpPart = request.getPart("masterxdp.xdp");
    System.out.println("Got master xdp");
    java.io.InputStream masterXdpPartIS = masterXdpPart.getInputStream();
    com.adobe.aemfd.docmanager.Document masterXdpDocument = new com.adobe.aemfd.docmanager.Document(masterXdpPartIS);

    javax.servlet.http.Part fragmentXDPPart = request.getPart("fragment.xdp");
    System.out.println("Got fragment.xdp");
    java.io.InputStream fragmentXDPPartIS = fragmentXDPPart.getInputStream();
    com.adobe.aemfd.docmanager.Document fragmentXdpDocument = new com.adobe.aemfd.docmanager.Document(fragmentXDPPartIS);

    java.util.Map < String, Object > mapOfDocuments = new java.util.HashMap < String, Object > ();
    mapOfDocuments.put("master.xdp", masterXdpDocument);
    mapOfDocuments.put("address.xdp", fragmentXdpDocument);
    com.adobe.fd.assembler.service.AssemblerService assemblerService = sling.getService(com.adobe.fd.assembler.service.AssemblerService.class);
    if (assemblerService != null)
      System.out.println("Got assembler service");

    com.adobe.fd.assembler.client.AssemblerOptionSpec aoSpec = new com.adobe.fd.assembler.client.AssemblerOptionSpec();
    aoSpec.setFailOnError(true);

    com.adobe.fd.assembler.client.AssemblerResult assemblerResult = assemblerService.invoke(ddxDocument, mapOfDocuments, aoSpec);
    com.adobe.aemfd.docmanager.Document finalXDP = assemblerResult.getDocuments().get("stitched.xdp");
    finalXDP.copyToFile(new java.io.File("stitched.xdp"));

下面列出了用于将片段插入另一个xdp的DDX文件。 DDX将address.xdp中的子表单​ 地址 ​插入到master.xdp中名为​ 地址 ​的插入点中。 名为​ stitched.xdp ​的结果文档已保存到文件系统。

<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="http://ns.adobe.com/DDX/1.0/">
        <XDP result="stitched.xdp">
           <XDP source="master.xdp">
            <XDPContent insertionPoint="address" source="address.xdp" fragment="address"/>
         </XDP>
        </XDP>
</DDX>

使此功能在您的AEM服务器上正常工作

安装包后,必须在Adobe Granite CSRF筛选器中允许列表以下URL。

  1. 请按照以下所述步骤列入允许列表上述路径。
  2. 登录到configMgr
  3. 搜索Adobe Granite CSRF筛选器
  4. 在排除的部分中添加以下路径并保存/content/AemFormsSamples/assemblerservice
  5. 搜索“Sling引用过滤器”
  6. 选中“允许为空”复选框。 (此设置仅用于测试目的)
    可通过多种方法来测试示例代码。 最快、最轻松的是使用Postman应用程序。 Postman允许您向服务器发出POST请求。 在您的系统上安装Postman应用程序。
    启动应用程序并输入以下URL以测试导出数据API
    http://localhost:4502/content/AemFormsSamples/assemblerservice.html

提供屏幕快照中指定的以下输入参数。 您可以使用之前下载的示例文档,
xdp-stitch-postman

NOTE
确保您的AEM Forms安装已完成。 您的所有包都必须处于活动状态。
recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e