Generieren von interaktivem Communications-Dokument für den Druck von Kanal mithilfe des Mechanismus für überwachte Ordner

Nachdem Sie Ihr Print-Kanal-Dokument entworfen und getestet haben, müssen Sie das Dokument in der Regel durch einen REST-Aufruf generieren oder mithilfe des Mechanismus für überwachte Ordner gedruckte Dokumente generieren.

In diesem Artikel wird das Verwendungsbeispiel für das Generieren von Dokumenten für den Druckordner mithilfe des Mechanismus für überwachte Kanäle erläutert.

Wenn Sie eine Datei im überwachten Ordner ablegen, wird ein Skript ausgeführt, das mit dem überwachten Ordner verknüpft ist. Dieses Skript wird im unten stehenden Artikel beschrieben.

Die Datei, die in den überwachten Ordner abgelegt wird, hat die folgende Struktur. Der Code generiert Anweisungen für alle im XML-Dokument aufgelisteten Kontonummern.

<accountnumbers>

<accountnumber>509840</accountnumber>

<accountnumber>948576</accountnumber>

<accountnumber>398762</accountnumber>

<accountnumber>291723</accountnumber>

</accountnumbers>

Die nachstehende Codeliste umfasst Folgendes:

Zeile 1: Pfad zum InteractiveCommunicationsDocument

Zeilen 15-20: Abrufen der Liste der Kontonummern aus dem XML-Dokument, das im überwachten Ordner abgelegt wird

Zeilen 24-25: Besorgen Sie sich den PrintChannelService- und Print-Kanal, der mit dem Dokument verknüpft ist.

Linie 30: Übergeben Sie die Kontonummer als Schlüsselelement an das Formulardatenmodell.

Zeilen 32-36: Legen Sie die Datenoptionen für das zu generierende Dokument fest.

Linie 38: Dokument rendern

Zeilen 39-40 - Speichert das generierte Dokument im Dateisystem.

Der REST-Endpunkt des Formulardatenmodells erwartet eine ID als Eingabeparameter. Diese ID wird einem Anforderungsattribut mit dem Namen accountNumber zugeordnet, wie im folgenden Screenshot dargestellt.

requestattribute

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 folgenden Anweisungen:

  • Setup Tomcat wie in diesem Artikel beschrieben. Tomcat verfügt über die Kriegsdatei, die die Musterdaten generiert.

  • Richten Sie den Dienst als Systembenutzer ein, wie in diesem Artikel beschrieben.
    Vergewissern Sie sich, dass dieser Systembenutzer über Leserechte für den folgenden Knoten verfügt. So melden Sie sich mit den Berechtigungen bei user admin an und suchen Sie nach den Systembenutzern "data". Weisen Sie den folgenden Knoten Leserechte zu, indem Sie auf die Registerkarte "Berechtigungen"klicken

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

  • Beispiel für ein interaktives Kommunikationsnetzwerk

  • 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 Sie drucken möchten.

  • Ändern Sie die saveLocation gemäß Ihrer Voreinstellung in Zeile 2

  • Erstellen Sie die 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 folder"ab.

  • Die generierten PDF-Dateien werden wie im ECMA-Skript angegeben in saveLocation geschrieben.

HINWEIS

Wenn Sie dies auf einem nicht Windows-Betriebssystem verwenden möchten, navigieren Sie zu

/etc/fd/watchfolder/config/PrintChannelDocument und ändern Sie folderPath entsprechend Ihren Voreinstellungen

Auf dieser Seite

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now