使用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 — 此文件夹将包含片段,主模板将引用如下所示的片段
. - xdpdocuments文件夹将包含您的基本模板和片段 片段 文件夹
您可以使用创建所需的结构 表单和文档ui
以下是示例使用2个片段的文件夹结构
- 输出服务 — 通常,此服务用于将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");
}
});
在系统上测试示例包
-
添加条目 DevelopingWithServiceUser.core:getformsresourceresolver=fd-service 在用户映射器服务修正中,如下面的屏幕快照中所示
-
下载并导入示例xdp文件和ECMA脚本.
这将在c:/fragmentsandoutputservice文件夹中创建观察文件夹结构 -
提取示例数据文件 并将其放入观察文件夹的install文件夹中(c:\fragmentsandoutputservice\install)
-
检查观察文件夹配置的结果文件夹中是否包含生成的pdf文件
recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e