- Erstellen Sie eine HTML-Vorlage für die PDF-Generierung, einschließlich Variablen und Schleifen im Mustache-Format.
- Laden Sie die Vorlage mit einem ausgewählten Namen über die REST-Schnittstelle hoch.
- Wenn Sie Ihre Vorlage später korrigieren möchten, ändern Sie sie über die REST-Schnittstelle.
- Laden Sie alle benötigten Bilder und Stylesheets als Uploads im AppServer hoch.
- In der App:
- Generierung dynamischer Daten.
- Laden Sie die generierten dynamischen Daten unter einer eindeutigen Session-ID im Key-Value-Store hoch (über die REST-Schnittstelle des Key-Value-Stores).
Die Nutzlast benötigt einen eindeutigen Schlüssel und die dynamischen Daten, die Sie speichern möchten.var payloadKeyValueStore = { key: "sessiondata/myTestApp/" + sap.ui.getCore().getModel().getData().sessionKey, content: btoa(JSON.stringify(sap.ui.getCore().getModel().getData())) ); this.callPlugin("keyValueStorePlugin", "puthttp", payloadKeyValueStore, callbackStoreSession, true, false, onKeyValueStoreFail)
- Optional: Hochladen weiterer Dokumente für das Zusammenführen in den Schlüssel-Wert-Speicher (über die REST-Schnittstelle des Schlüssel-Wert-Speichers).
- Optional: Hochladen einer Liste dieser Dokumentschlüssel als Mergeliste in den Schlüssel-Wert-Speicher (über die REST-Schnittstelle des Schlüssel-Wert-Speichers).
- Start der PDF-Generierung mit dem Vorlagennamen, der Session-ID und (optional) Konfigurationsdaten für die PDF-Generierung über die REST-Schnittstelle.
var callbackStoreSession = function(data) { if(data.success) { var payloadGeneratePdf = { "template": "templatename", "session": "myTestApp/" + sap.ui.getCore().getModel().getData(). sessionKey, //"config": "(\"orientation\" : \"Portrait", \"page-size\" : \"A4\", \"margin-top\" : \"1in\", \"margin-bottom\" : \"1in\", //\"margin-left\" : \"1in\", \"margin-right\" : \"1in\", \"footer-center\" : \"[page] / [toPage]\"}\"}" }; busyDialog.setText("Generates requested PDF. Kindly have some patience."); $this.callPlugin("pdfPlugin", "generatePdf", payloadGeneratePdf, callbackGeneratePdf, true, false, onGeneratePdfFail); } };
- Merken Sie sich die jobID.
- Asynchrone Ausführung der PDF-Generierung (Hintergrundbetrieb).
- Rufen Sie die Vorlage auf.
- Rufen Sie die dynamischen Daten auf.
- Werten Sie die Daten in der Vorlage aus.
- Rufen Sie die statischen Assets (Bilder, Stylesheets) aus dem AppServer auf.
- Konvertieren Sie die fertige HTML-Datei in ein PDF.
- Rufen Sie die Mergeliste und die Merge-Binärdateien ab.
- Führen Sie die erstellte PDF-Datei mit den Seriendruckdateien zusammen.
- Speichern Sie die fertige PDF-Datei im Schlüssel-Wert-Speicher.
- Rufen Sie den Schlüssel-Wert-Speicher über die REST-Schnittstelle mit der eingeschränkten jobID auf, um zu sehen, ob das PDF bereits fertig ist.
var jobId; var callbackGeneratePdf = function(data) { if (data.success) { jobId = { key: "pdf/"+data.value.jobId+".pdf" ); //timeout for demo purpose setTimeout(function() { $this.callPlugin("keyValueStorePlugin", "gethttp", jobId, callbackFetchPdf, true, false, onKeyValueStoreFail); },10000); } }; var callbackFetchPdf = function(data) { if(data.success) { var pdfData = data.result; window.open("data:application/pdf;base64,"pdfData); } };