von Patrick Gundlach |

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.