Generieren eines interaktiven Kommunikationsdokuments für den Druckkanal mit dem Mechanismus für überwachte Ordner

Nach dem Entwerfen und Testen Ihres Druckkanaldokuments müssen Sie in der Regel das Dokument über einen REST-Aufruf oder Druckdokumente mithilfe des Mechanismus für überwachte Ordner generieren.

In diesem Artikel wird der Anwendungsfall zum Generieren von Druckkanaldokumenten mit dem Mechanismus für überwachte Ordner erläutert.

Wenn Sie eine Datei im überwachten Ordner ablegen, wird ein mit dem überwachten Ordner verknüpftes Skript ausgeführt. Dieses Skript wird im unten stehenden Artikel erläutert.

Die im überwachten Ordner abgelegte Datei weist die folgende Struktur auf. Der Code generiert Anweisungen für alle im XML-Dokument aufgelisteten accountnumber-Attribute.

<accountnumbers>

<accountnumber>509840</accountnumber>

<accountnumber>948576</accountnumber>

<accountnumber>398762</accountnumber>

<accountnumber>291723</accountnumber>

</accountnumbers>

Der nachstehende Code bewirkt Folgendes:

Zeile 1: Gibt den Pfad zum „InteractiveCommunicationsDocument“ an.

Zeilen 15–20: Hiermit wird die accountnumber-Liste aus dem im überwachten Ordner abgelegten XML-Dokument abgerufen.

Zeilen 24–25: Hiermit werden der PrintChannelService und der Druckkanal abgerufen, die mit dem Dokument verknüpft sind.

Zeile 30: Übergibt die accountnumber als Schlüsselelement an das Formulardatenmodell.

Zeilen 32–36: Hiermit werden die Datenoptionen für das zu generierende Dokument festgelegt.

Zeile 38: Rendert das Dokument.

Zeilen 39-40: Hiermit wird das generierte Dokument im Dateisystem gespeichert.

Der REST-Endpunkt des Formulardatenmodells erwartet eine ID als Eingabeparameter. Diese ID wird dem Anfrageattribut „accountnumber“ zugeordnet, wie im Screenshot unten dargestellt.

Anfrageattribut

var interactiveCommunicationsDocument = "/content/forms/af/retirementstatementprint/channels/print/";
var saveLocation =  new Packages.java.io.File("c:\\scrap\\loadtesting");

if(!saveLocation.exists())
{
 saveLocation.mkdirs();
}

var inputMap = processorContext.getInputMap();
var entry = inputMap.entrySet().iterator().next();
var inputDocument = inputMap.get(entry.getKey());
var aemDemoListings = sling.getService(Packages.com.mergeandfuse.getserviceuserresolver.GetResolver);
var resourceResolver = aemDemoListings.getServiceResolver();
var resourceResolverHelper = sling.getService(Packages.com.adobe.granite.resourceresolverhelper.ResourceResolverHelper);
var dbFactory = Packages.javax.xml.parsers.DocumentBuilderFactory.newInstance();
var dBuilder = dbFactory.newDocumentBuilder();
var xmlDoc = dBuilder.parse(inputDocument.getInputStream());
var nList = xmlDoc.getElementsByTagName("accountnumber");
for(var i=0;i<nList.getLength();i++)
{
 var accountnumber = nList.item(i).getTextContent();
resourceResolverHelper.callWith(resourceResolver, {call: function()
       {
   var printChannelService = sling.getService(Packages.com.adobe.fd.ccm.channels.print.api.service.PrintChannelService);
   var printChannel = printChannelService.getPrintChannel(interactiveCommunicationsDocument);
   var options = new Packages.com.adobe.fd.ccm.channels.print.api.model.PrintChannelRenderOptions();
   options.setMergeDataOnServer(true);
   options.setRenderInteractive(false);
   var map = new Packages.java.util.HashMap();
   map.put("accountnumber",accountnumber);
    // Required Data Options
   var dataOptions = new Packages.com.adobe.forms.common.service.DataOptions();
   dataOptions.setServiceName(printChannel.getPrefillService());
   dataOptions.setExtras(map);
   dataOptions.setContentType(Packages.com.adobe.forms.common.service.ContentType.JSON);
   dataOptions.setFormResource(resourceResolver.resolve(interactiveCommunicationsDocument));
            options.setDataOptions(dataOptions);
    var printDocument = printChannel.render(options);
   var statement = new Packages.com.adobe.aemfd.docmanager.Document(printDocument.getInputStream());
            statement.copyToFile(new Packages.java.io.File(saveLocation+"\\"+accountnumber+".pdf"));

      }
   });
}

Um dies auf Ihrem lokalen System zu testen, befolgen Sie die nachstehenden Anweisungen:

  • Richten Sie Tomcat ein, wie in diesem Artikel beschrieben. Tomcat verfügt über die WAR-Datei, die die Beispieldaten generiert.

  • Richten Sie den Dienst (die Systembenutzerin oder den Systembenutzer) ein, wie in diesem Artikel beschrieben.
    Stellen Sie sicher, dass diese Systembenutzerin bzw. dieser Systembenutzer über Leseberechtigungen für die folgenden Knoten verfügt. Um diese Berechtigungen zu gewähren, melden Sie sich als Benutzeradmin an und suchen Sie nach den „Daten“ der Systembenutzerin bzw. des Systembenutzers und erteilen Sie die Leseberechtigungen für die folgenden Knoten, indem Sie die Registerkarte „Berechtigungen“ aufrufen:

    • /content/dam/formsanddocuments
    • /content/dam/formsanddocuments-fdm
    • /content/forms/af
  • Importieren Sie das folgende Paket mit Package Manager in AEM. Dieses Paket enthält Folgendes:

  • Beispieldokument zur interaktiven Kommunikation

  • Skript für überwachte Ordner

  • Datenquellkonfiguration

  • Öffnen Sie die Datei „/etc/fd/watchfolder/scripts/PrintPDF.ecma“. Stellen Sie sicher, dass der Pfad zum „interactiveCommunicationsDocument“ in Zeile 1 auf das richtige Dokument verweist, das gedruckt werden soll.

  • Ändern Sie den Speicherort („saveLocation“) wie gewünscht in Zeile 2.

  • Erstellen Sie eine Datei „accountnumbers.xml“ mit folgendem Inhalt:

<accountnumbers>
<accountnumber>1</accountnumber>
<accountnumber>100</accountnumber>
<accountnumber>101</accountnumber>
<accountnumber>1009</accountnumber>
<accountnumber>10009</accountnumber>
<accountnumber>11990</accountnumber>
</accountnumbers>
  • Legen Sie die Datei „accountnumbers.xml“ im Ordner „C:\RenderPrintChannel\input“ ab.

  • Die generierten PDF-Dateien werden an dem im ECMA-Skript angegebenen Speicherort („saveLocation“) geschrieben.

NOTE
Wenn Sie dies auf einem Nicht-Windows-Betriebssystem verwenden möchten, navigieren Sie zu
„/etc/fd/watchfolder/config/PrintChannelDocument“ und ändern Sie „folderPath“ wie gewünscht.
recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e