Finalizer Callback Und HTTP-Modul im Lua-Filter
Zwei Neuerungen gibt es in Version 3.7.18 im Lua-Filter. Zur Erinnerung, man kann vor der eigentlichen Datenverarbeitung ein Lua-Skript starten, das alle notwendigen Dinge erledigen kann, die für die eigentliche Datenverarbeitung vonöten ist. Man kann z.B.
- Excel-Tabellen in XML umwandeln
- CSV-Dateien einlesen
- XML per XSLT transformieren
- Dateien kopieren
und so weiter.
Ab sofort können auch HTTP-Aufrufe getätigt werden.
Und es gibt einen Callback, der beim Ende des Durchlaufs aufgerufen wird, also nach Erzeugung des PDFs und direkt bevor die Datei publisher.finished
erstellt wird.
In seiner minimalen Form wird die Funktion so benutzt:
runtime = require("runtime")
-- wird aufgerufen, wenn PDF Datei erzeugt wird
-- (durch den runtime.finalizer callback unten)
function finished()
print("Die PDF-Datei wurde geschrieben")
end
runtime.finalizer = finished
Zusammen mit dem HTTP-Modul kann man folgendes machen:
runtime = require("runtime")
http = require("http")
-- wird aufgerufen, wenn PDF Datei erzeugt wird
-- (durch den runtime.finalizer callback unten)
function finished()
tbl, msg = http.get("https://example.com/pdf/is/finished/")
if tbl == nil then
print(msg)
os.exit(1)
end
end
runtime.finalizer = finished
Hier wird eine URL aufgerufen, wenn die PDF-Datei erstellt ist. Damit kann man z.B. bei einem Dienst »Bescheid geben«, wenn ein PDF zur Verfügung steht.
Gestartet wird der Filter wie immer mit sp --filter=meinedatei.lua
bzw. in der Konfigurationsdatei mit filter=meinedatei.lua
.
Die Anleitung gibt es natürlich online. Das HTTP-Modul ist auf Github zu finden.