Generera PDF med data från blankettinlämning

Här är den reviderade texten med"Core Components" (kärnkomponenter) med inledande versal:

Ett typiskt scenario är att generera en PDF från data som skickas via en Core Components-baserad anpassningsbar form. Dessa data är alltid i JSON-format. Om du vill generera en PDF med hjälp av API:t för renderaren i PDF måste du konvertera JSON-data till XML-format. Metoden toString i org.json.XML används för den här konverteringen. Mer information finns i dokumentationen för org.json.XML.toString method.

Anpassningsbart formulär baserat på JSON-schema

Följ de här stegen för att skapa ett JSON-schema för ditt adaptiva formulär:

Generera exempeldata för XDP

Så här effektiviserar du processen:

  1. Öppna XDP-filen i AEM Forms Designer.
  2. Navigera till Arkiv > Formuläregenskaper > Förhandsgranska.
  3. Välj"Generera förhandsgranskningsdata".
  4. Klicka på"Generera".
  5. Tilldela ett beskrivande filnamn, till exempel form-data.xml.

Generera JSON-schema från XML-data

Du kan använda vilket kostnadsfritt onlineverktyg som helst för att konvertera XML till JSON med hjälp av XML-data som genererats i föregående steg.

Anpassad arbetsflödesprocess för att konvertera JSON till XML

Den angivna koden konverterar JSON till XML och lagrar den resulterande XML-koden i en arbetsflödesprocessvariabel som heter dataXml.

import org.slf4j.LoggerFactory;
import com.adobe.granite.workflow.WorkflowException;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import javax.jcr.Node;
import javax.jcr.Session;
import org.json.JSONObject;
import org.json.XML;
import org.slf4j.Logger;
import org.osgi.service.component.annotations.Component;
import com.adobe.granite.workflow.WorkflowSession;
import com.adobe.granite.workflow.exec.WorkItem;
import com.adobe.granite.workflow.exec.WorkflowProcess;
import com.adobe.granite.workflow.metadata.MetaDataMap;

@Component(property = {
    "service.description=Convert JSON to XML",
    "process.label=Convert JSON to XML"
})
public class ConvertJSONToXML implements WorkflowProcess {

    private static final Logger log = LoggerFactory.getLogger(ConvertJSONToXML.class);

    @Override
    public void execute(final WorkItem workItem, final WorkflowSession workflowSession, final MetaDataMap arg2) throws WorkflowException {
        String processArgs = arg2.get("PROCESS_ARGS", "string");
        log.debug("The process argument I got was " + processArgs);

        String submittedDataFile = processArgs;
        String payloadPath = workItem.getWorkflowData().getPayload().toString();
        log.debug("The payload in convert json to xml " + payloadPath);

        String dataFilePath = payloadPath + "/" + submittedDataFile + "/jcr:content";
        try {
            Session session = workflowSession.adaptTo(Session.class);
            Node submittedJsonDataNode = session.getNode(dataFilePath);
            InputStream jsonDataStream = submittedJsonDataNode.getProperty("jcr:data").getBinary().getStream();
            BufferedReader streamReader = new BufferedReader(new InputStreamReader(jsonDataStream, "UTF-8"));
            StringBuilder stringBuilder = new StringBuilder();
            String inputStr;
            while ((inputStr = streamReader.readLine()) != null) {
                stringBuilder.append(inputStr);
            }
            JSONObject submittedJson = new JSONObject(stringBuilder.toString());
            log.debug(submittedJson.toString());

            String xmlString = XML.toString(submittedJson);
            log.debug("The json converted to XML " + xmlString);

            MetaDataMap metaDataMap = workItem.getWorkflow().getWorkflowData().getMetaDataMap();
            metaDataMap.put("xmlData", xmlString);
        } catch (Exception e) {
            log.error("Error converting JSON to XML: " + e.getMessage(), e);
        }
    }
}

Skapa arbetsflöde

Om du vill hantera formuläröverföringar skapar du ett arbetsflöde som innehåller två steg:

  1. I det inledande steget används en anpassad process för att omvandla skickade JSON-data till XML.
  2. I nästa steg skapas en PDF genom att XML-data kombineras med XDP-mallen.

json-to-xml

Distribuera exempelkoden

Så här testar du detta på den lokala servern:

  1. Hämta och installera det anpassade paketet via webbkonsolen AEM OSGi.
  2. Importera arbetsflödespaketet.
  3. Importera exemplet Adaptivt formulär och XDP-mall.
  4. Förhandsgranska det adaptiva formuläret.
  5. Fyll i några formulärfält.
  6. Skicka in formuläret för att initiera AEM arbetsflöde.
  7. Hitta den återgivna PDF-filen i arbetsflödets nyttolastmapp.
recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e