Dans cet article, nous allons utiliser le service output pour générer des fichiers pdf à l’aide de fragments xdp. Le xdp principal et les fragments résident dans le référentiel crx. Il est important d’imiter la structure de dossiers du système de fichiers dans AEM. Par exemple, si vous utilisez un fragment dans le dossier fragments de votre xdp, vous devez créer un dossier appelé fragments sous votre dossier de base dans AEM. Le dossier de base contient votre modèle xdp de base. Par exemple, si votre système de fichiers contient la structure suivante :
Vous pouvez créer la structure requise à l’aide du Interface utilisateur des formulaires et des documents
Voici la structure de dossiers de l’exemple xdp qui utilise 2 fragments.
Le code suivant a été utilisé pour inclure des fragments dans le fichier du PDF.
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);
Test de l’exemple de package sur votre système
Après avoir installé le package, vous devrez placer sur la liste autorisée les URL suivantes dans Adobe Granite CSRF Filter.
Il existe plusieurs façons de tester l’exemple de code. Le plus rapide et le plus simple est d’utiliser l’application Postman. Postman vous permet d’envoyer des requêtes de POST à votre serveur. Installez l’application Postman sur votre système.
Lancez l’application et saisissez l’URL suivante pour tester l’API d’exportation des données.
Assurez-vous que vous avez sélectionné "POST" dans la liste déroulante http://localhost:4502/content/AemFormsSamples/usingfragments.html Assurez-vous que vous spécifiez "Autorisation" comme "Auth de base". Indiquez le nom d’utilisateur et le mot de passe du serveur AEM Accédez à l’onglet "Corps" et spécifiez les paramètres de requête comme illustré dans l’image ci-dessous.
Cliquez ensuite sur le bouton Envoyer
Vous pouvez importer cette collection Postman pour tester l’API