In diesem Artikel verwenden wir den Output-Dienst, um PDF-Dateien mit XDP-Fragmenten zu generieren. Die Haupt-XDP und die Fragmente befinden sich im CRX-Repository. Es ist wichtig, die Dateisystemordnerstruktur in AEM zu imitieren. Wenn Sie beispielsweise ein Fragment im Fragmentordner in Ihrer xdp verwenden, müssen Sie einen Ordner mit dem Namen Fragmente unter Ihrem Basisordner in AEM. Der Basisordner enthält Ihre Basis-XDP-Vorlage. Wenn Sie beispielsweise die folgende Struktur auf Ihrem Dateisystem haben
Sie können die erforderliche Struktur mithilfe der Formulare und Dokument-Benutzeroberfläche
Im Folgenden finden Sie die Ordnerstruktur für das Beispiel-XDP, das 2 Fragmente verwendet
Das folgende ECMA-Skript wurde verwendet, um PDF zu generieren. Beachten Sie die Verwendung von ResourceResolver und ResourceResolverHelper im Code. Der ResourceResolver ist erforderlich, da dieser Code außerhalb jedes Benutzerkontexts ausgeführt wird.
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");
}
});
So testen Sie das Beispielpaket auf Ihrem System
Eintrag hinzufügen DevelopingWithServiceUser.core:getformsresourceresolver=fd-service in der User Mapper-Dienständerung, wie im Screenshot unten dargestellt
Herunterladen und Importieren von Beispiel-XDP-Dateien und ECMA-Skripten.
Dadurch wird eine überwachte Ordnerstruktur im Ordner c:/fragments/outputService erstellt.
Beispieldatendatei extrahieren und legen Sie sie im Installationsordner Ihres überwachten Ordners ab (c:\fragmentsandoutputservice\install).
Überprüfen Sie den Ergebnisordner Ihrer Konfiguration des überwachten Ordners auf die generierte PDF-Datei.