En este artículo utilizaremos el servicio de salida para generar archivos pdf usando fragmentos xdp. El xdp principal y los fragmentos residen en el repositorio crx. Es importante imitar la estructura de carpetas del sistema de archivos en AEM. Por ejemplo, si está utilizando un fragmento en la carpeta de fragmentos de su xdp, debe crear una carpeta llamada fragmentos debajo de la carpeta base en AEM. La carpeta base contendrá la plantilla xdp base. Por ejemplo, si tiene la siguiente estructura en el sistema de archivos
Puede crear la estructura necesaria utilizando la variable iu de formularios y documentos
La siguiente es la estructura de carpetas para el ejemplo xdp que utiliza 2 fragmentos
Se utilizó el siguiente script ECMA generate PDF. Observe el uso de ResourceResolver y ResourceResolverHelper en el código. Se necesita ResourceReolver ya que este código se ejecuta fuera de cualquier contexto de usuario.
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");
}
});
Para probar el paquete de muestra en el sistema
Añadir la entrada DevelopingWithServiceUser.core:getformsresourceresolver=fd-service en la modificación del servicio de asignación de usuarios como se muestra en la captura de pantalla siguiente
Descargue e importe los archivos xdp de muestra y las secuencias de comandos ECMA.
Esto creará una estructura de carpetas vigilada en la carpeta c:/fragmentsandoutputservice
Extraer el archivo de datos de ejemplo y colóquelo en la carpeta de instalación de su carpeta vigilada (c:\fragmentsandoutputservice\install)
Compruebe la carpeta de resultados de la configuración de la carpeta observada para el archivo pdf generado