Interactief communicatiedocument genereren voor afdrukkanaal met behulp van controlemap
- Van toepassing op:
- Experience Manager 6.4
- Experience Manager 6.5
Gemaakt voor:
- tussenpersoon
- Ontwikkelaar
Nadat u het afdrukkanaaldocument hebt ontworpen en getest, moet u het document meestal genereren door een REST-aanroep te maken of afdrukdocumenten te genereren aan de hand van het controlemap.
In dit artikel wordt uitgelegd hoe u documenten met afdrukkanalen kunt genereren aan de hand van het mechanisme voor gecontroleerde mappen.
Wanneer u een bestand neerzet in de controlemap, wordt een script uitgevoerd dat is gekoppeld aan een controlemap. Dit script wordt uitgelegd in het onderstaande artikel.
Het bestand dat naar de gecontroleerde map is neergezet, heeft de volgende structuur. De code genereert instructies voor alle accountnummers die in het XML-document worden vermeld.
<accountnummers>
<accountnummer>509840</accountnummer>
<accountnummer>948576</accountnummer>
<accountnummer>398762</accountnummer>
<accountnummer>291723</accountnummer>
</accountnummers>
In de onderstaande code ziet u het volgende:
Lijn 1 - Weg aan InteractiveCommunicationsDocument
Regels 15-20: hiermee wordt de lijst met accountnummers uit het XML-document in de gecontroleerde map geplaatst
Lijnen 24 -25: krijg PrintChannelService en het Kanaal van de Druk verbonden aan het document.
Regel 30: Geef het accountnummer als het sleutelelement door aan het Model van de Gegevens van het Vorm.
Lijnen 32-36: plaats de Opties van Gegevens voor het Document dat moet worden geproduceerd.
Regel 38: Render het document.
Lijnen 39-40 - Slaat het geproduceerde document aan het dossiersysteem op.
Het REST-eindpunt van het Form Data Model verwacht een id als invoerparameter. deze id wordt in kaart gebracht aan een Attribuut van het Verzoek genoemd accountnummer zoals aangetoond in het hieronder schroevingsschot.
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"));
}
});
}
om dit op uw lokaal systeem te testen gelieve de volgende instructies te volgen:
-
Opstelling Tomcat zoals die in dit artikel wordt beschreven. Tomcat heeft het oorlogsdossier dat de steekproefgegevens produceert.
-
De dienst van de opstelling alias systeemgebruiker zoals die in dit wordt beschreven artikel.
Zorg ervoor dat deze systeemgebruiker lees toestemmingen op de volgende knoop heeft. Om de toestemmingenlogin aan gebruiker te geven adminen onderzoek naar de systeemgebruiker "gegevens"en de gelezen toestemmingen op de volgende knoop te geven door aan het toestemmingenlusje van labels te voorzien- /content/dam/formsanddocuments
- /content/dam/formsanddocuments-fdm
- /content/forms/af
-
Importeer de volgende pakketten naar AEM met de pakketmanager. Dit pakket bevat het volgende:
-
Open het bestand /etc/fd/watchfolder/scripts/PrintPDF.ecma. Zorg ervoor dat het pad naar het interactiveCommunicationsDocument in regel 1 naar het juiste document verwijst dat u wilt afdrukken
-
De opslaglocatie wijzigen volgens uw voorkeur op regel 2
-
Het bestand accountnumbers.xml maken met de volgende inhoud
<accountnumbers>
<accountnumber>1</accountnumber>
<accountnumber>100</accountnumber>
<accountnumber>101</accountnumber>
<accountnumber>1009</accountnumber>
<accountnumber>10009</accountnumber>
<accountnumber>11990</accountnumber>
</accountnumbers>
-
Zet de accountnumbers.xml neer in de map C:\RenderPrintChannel\input.
-
De gegenereerde PDF-bestanden worden naar saveLocation geschreven, zoals in het ECMA-script is opgegeven.