Generazione di documenti PDF tramite frammenti developing-with-output-and-forms-services-in-aem-forms

In questo articolo utilizzeremo il servizio di output per generare file pdf utilizzando frammenti xdp. L’xdp principale e i frammenti risiedono nell’archivio crx. È importante simulare la struttura delle cartelle del file system in AEM. Ad esempio, se utilizzi un frammento nella cartella Frammenti nel tuo XDP, devi creare una cartella denominata frammenti nella cartella base in AEM. La cartella base conterrà il modello xdp di base. Ad esempio, se nel file system è presente la seguente struttura

  • c:\xdptemplates - Conterrà il modello xdp di base
  • c:\xdptemplates\fragments - Questa cartella conterrà frammenti e il modello principale farà riferimento al frammento come mostrato di seguito
    frammento-xdp .
  • La cartella xdpdocuments conterrà il modello di base e i frammenti nella cartella fragments

Puoi creare la struttura richiesta utilizzando forms and document ui

Di seguito è riportata la struttura di cartelle per l’XDP di esempio che utilizza 2 frammenti
modulidocumento

  • Servizio di output: in genere questo servizio viene utilizzato per unire i dati xml con un modello xdp o un PDF per generare un PDF appiattito. Per ulteriori dettagli, fare riferimento a javadoc per il servizio di output. In questo esempio utilizziamo frammenti che risiedono nell’archivio crx.

Il codice seguente è stato utilizzato per includere frammenti nel file 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);

Per eseguire il test del pacchetto di esempio nel sistema

Dopo aver installato il pacchetto, sarà necessario inserire nell'elenco Consentiti i seguenti URL in Adobe Granite CSRF Filter.

  1. Segui i passaggi indicati di seguito per inserire nell'elenco Consentiti i percorsi menzionati in precedenza.
  2. Accesso a configMgr
  3. Cerca Adobe di filtro CSRF Granite
  4. Aggiungi il seguente percorso nelle sezioni escluse e salva
  5. /content/AemFormsSamples/usingfragments

Esistono diversi modi per testare il codice di esempio. Il metodo più rapido e semplice consiste nell’utilizzare l’app Postman. Postman consente di effettuare richieste POST al server. Installa l’app Postman sul sistema.
Avvia l’app e immetti il seguente URL per testare l’API di esportazione dei dati

Accertati di aver selezionato "POST" dall’elenco a discesa
http://localhost:4502/content/AemFormsSamples/usingfragments.html
Assicurarsi di specificare Autorizzazione come Autenticazione di base. Specificare il nome utente e la password del server AEM
Passa alla scheda "Corpo" e specifica i parametri di richiesta come mostrato nell’immagine seguente
esporta
Quindi fare clic sul pulsante Invia

Puoi importare questa raccolta postman per testare l’API

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