使用ECMA脚本生成带片段的pdf文档 developing-with-output-and-forms-services-in-aem-forms

在本文中,我们将使用输出服务来生成使用xdp片段的pdf文件。 主xdp和片段驻留在crx存储库中。 模拟AEM中的文件系统文件夹结构很重要。 例如,如果您在xdp的片段文件夹中使用片段,则必须创建一个名为 片段 在AEM中的基础文件夹下。 基本文件夹将包含您的基本xdp模板。 例如,如果文件系统中具有以下结构

  • c:\xdptemplates — 这将包含您的基本xdp模板
  • c:\xdptemplates\fragments — 此文件夹将包含片段,主模板将引用如下所示的片段
    片段 — xdp .
  • xdpdocuments文件夹将包含您的基本模板和片段 片段 文件夹

您可以使用创建所需的结构 表单和文档ui

以下是示例使用2个片段的文件夹结构
formsdocument

  • 输出服务 — 通常,此服务用于将xml数据与xdp模板或pdf合并,以生成拼合的pdf。 欲知更多详情,请参阅 javadoc 用于Output服务 在此示例中,我们使用驻留在crx存储库中的片段。

以下ECMA脚本已用于生成PDF。 请注意代码中使用了ResourceResolver和ResourceResolverHelper。 需要ResourceReolver,因为此代码在任何用户上下文之外运行。

var inputMap = processorContext.getInputMap();
var itr = inputMap.entrySet().iterator();
var entry = inputMap.entrySet().iterator().next();
var xmlData = inputMap.get(entry.getKey());
log.info("Got XML Data File");

var resourceResolverHelper = sling.getService(Packages.com.adobe.granite.resourceresolverhelper.ResourceResolverHelper);
var aemDemoListings = sling.getService(Packages.com.mergeandfuse.getserviceuserresolver.GetResolver);
log.info("Got service resolver");
var resourceResolver = aemDemoListings.getFormsServiceResolver();
//The ResourceResolverHelper execute's the following code within the context of the resourceResolver
resourceResolverHelper.callWith(resourceResolver, {call: function()
       {
             //var statement = new Packages.com.adobe.aemfd.docmanager.Document("/content/dam/formsanddocuments/xdpdocuments/main.xdp",resourceResolver);
               var outputService = sling.getService(Packages.com.adobe.fd.output.api.OutputService);
            var pdfOutputOptions = new Packages.com.adobe.fd.output.api.PDFOutputOptions();
            pdfOutputOptions.setContentRoot("crx:///content/dam/formsanddocuments/xdpdocuments");
            pdfOutputOptions.setAcrobatVersion(Packages.com.adobe.fd.output.api.AcrobatVersion.Acrobat_11);
            var dataMergedDocument = outputService.generatePDFOutput("main.xdp",xmlData,pdfOutputOptions);
               //var dataMergedDocument = outputService.generatePDFOutput(statement,xmlData,pdfOutputOptions);
            processorContext.setResult("mergeddocument.pdf",dataMergedDocument);
            log.info("Generated the pdf document with fragments");
      }

 });

在系统上测试示例包

recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e