Generera PDF-dokument med fragment developing-with-output-and-forms-services-in-aem-forms

I den här artikeln använder vi utdatatjänsten för att generera PDF-filer med hjälp av xdp-fragment. Den huvudsakliga xdp-filen och fragmenten finns i crx-databasen. Det är viktigt att efterlikna filsystemets mappstruktur i AEM. Om du till exempel använder ett fragment i fragmentmappen i xdp måste du skapa en mapp med namnet fragment under din AEM. Basmappen kommer att innehålla din bas-xdp-mall. Om du till exempel har följande struktur i filsystemet

  • c:\xdptemplates - Detta kommer att innehålla xdp-basmallen
  • c:\xdptemplates\fragments - Den här mappen innehåller fragment och huvudmallen refererar till fragmentet enligt nedan
    fragment-xdp .
  • Mappens xdpdokument kommer att innehålla din basmall och fragmenten i fragment mapp

Du kan skapa den struktur som behövs med hjälp av formulär och dokumentgränssnitt

Nedan följer mappstrukturen för exempelkoden xdp som använder 2 fragment
formulärdokument

  • Utdatatjänst - Vanligtvis används den här tjänsten för att sammanfoga XML-data med xdp-mall eller pdf för att generera sammanlagd pdf. Mer information finns i javadoc för Output-tjänsten. I det här exemplet använder vi fragment som finns i crx-databasen.

Följande kod användes för att inkludera fragment i PDF-filen

System.out.println("I am in using fragments POST.jsp");
// contentRootURI is the base folder. All fragments are relative to this folder
String contentRootURI = request.getParameter("contentRootURI");
String xdpName = request.getParameter("xdpName");
javax.servlet.http.Part xmlDataPart = request.getPart("xmlDataFile");
System.out.println("Got xml file");
String filePath = request.getParameter("saveLocation");
java.io.InputStream xmlIS = xmlDataPart.getInputStream();
com.adobe.aemfd.docmanager.Document xmlDocument = new com.adobe.aemfd.docmanager.Document(xmlIS);
com.adobe.fd.output.api.OutputService outputService = sling.getService(com.adobe.fd.output.api.OutputService.class);

if (outputService == null) {
  System.out.println("The output service is  null.....");
} else {
  System.out.println("The output service is  not null.....");

}
com.adobe.fd.output.api.PDFOutputOptions pdfOptions = new com.adobe.fd.output.api.PDFOutputOptions();
pdfOptions.setAcrobatVersion(com.adobe.fd.output.api.AcrobatVersion.Acrobat_11);

pdfOptions.setContentRoot(contentRootURI);

com.adobe.aemfd.docmanager.Document generatedDocument = outputService.generatePDFOutput(xdpName, xmlDocument, pdfOptions);
generatedDocument.copyToFile(new java.io.File(filePath));
out.println("Document genreated and saved to " + filePath);

Testa exempelpaketet på datorn

När du har installerat paketet måste du tillåtslista följande URL:er i Adobe Granite CSRF-filtret.

  1. Följ stegen nedan för att tillåtslista de sökvägar som nämns ovan.
  2. Logga in på configMgr
  3. Sök efter Adobe Granite CSRF-filter
  4. Lägg till följande sökväg i de uteslutna avsnitten och spara
  5. /content/AemFormsSamples/usingFrments

Du kan testa exempelkoden på flera olika sätt. Det snabbaste och enklaste är att använda Postman. Med Postman kan du göra förfrågningar om POST till servern. Installera Postman-appen på datorn.
Starta programmet och ange följande URL för att testa API:t för exportdata

Se till att du har valt "POST" i listrutan http://localhost:4502/content/AemFormsSamples/usingfragments.html Kontrollera att du har angett "Auktorisering" som "Grundläggande autentisering". Ange AEM användarnamn och lösenord Navigera till fliken "Brödtext" och ange parametrarna för begäran enligt bilden nedan
export
Klicka sedan på knappen Skicka

Du kan importera den här postmansamlingen för att testa API:t

recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e