4.15. PDF-Generierung für den Goobi viewer

Dieses TaskManager-Plugin erzeugt PDF-Dateien auf der Basis von METS/MODS-Dokumenten und schreibt diese ins Dateisystem. Aufträge zur Erzeugung von PDF-Dateien werden über den TaskClient erstellt und können über eine REST-Schnittstelle beobachtet werden. Nach Beendigung eines Auftrages wird eine Statusmeldung an eine konfigurierte URL gesendet.

Dieses Plugin ist so ausgelegt, dass unterbrochene Aufträge neu bearbeitet und abgeschlossen werden, wenn das Plugin zwischenzeitlich ausgeschaltet wurde, oder der gesamte TaskManager ausgeschaltet wird. Dies gilt auch für ein unerwartetes Beenden des Servers.

Zur Kommunikation mit dem TaskManager ist ein intranda viewer mit einer Versionsnummer 3.1 oder neuer erforderlich, der über einen Zugriff auf einen TaskClient verfügen muss, die bereits im Lieferumfang der intranda-viewer-Installation enthalten sein kann.

Aufruf des Plugins

Dieses Plugin wird im Gegensatz zu den anderen TaskManager-Plugins nicht über den üblichen TaskClient-Aufruf beauftragt, sondern programmatisch unmittelbar aus dem Java-Code. Der Aufruf im Quellcode erfolgt dabei folgendermaßen:

OcrClient.createPost(taskManagerUrl,
metsFilePath, targetPath, "", "", priority, logId,
title, dataRepository, "VIEWERPDF", downloadIdentifier,
"noServerTypeInTaskClient", "", "", "", "", false);

Parameter

Mögliche Goobi Variable

Bedeutung

taskManagerUrl

http://localhost/itm/service

URL zur Schnittstelle des intranda TaskManagers

metsFilePath

/opt/digiverso/viewer/indexed_mets/12345.xml

Der (absolute) Dateipfad zur METS-Datei

targetPath

/opt/digiverso/viewer/download_pdf/emos5dm.pdf

Der (absolute) Dateipfad zum Download-Verzeichnis

priority

10

Die Priorisierung in der TaskManager-Queue

logId

LOG_0003

Die METS-ID des zu verwendenden Strukturelementes. Dieser Wert kann null oder leer sein; in diesem Falle wird das oberste Strukturelement des Werkes verwendet

title

12345_LOG_0003

Die METS-ID des zu verwendenden Strukturelementes. Dieser Wert kann null oder leer sein; in diesem Falle wird das oberste Strukturelement des Werkes verwendet

dataRepository

/opt/digiverso/viewer/

Der (absolute) Dateipfad zum Viewer-Repository mit den benötigten Inhalten.

downloadIdentifier

Der Identifier des PDF-Auftrages

Konfiguration des Plugins

Im Plugin-Konfigurationsordner des intranda TaskManagers muss die Konfigurationsdatei viewerpdfconfig.xml mit folgendem Inhalt vorhanden sein:

<config_plugin>
<jobsInProcessing max="1"></jobsInProcessing>
<contentServerconfig>
/opt/digiverso/itm/plugins/config/config_contentServer.xml
</contentServerconfig>
<viewerServletUrl>http://localhost:8082/viewer/harvest</viewerServletUrl>
</config_plugin>

Die einzelnen Konfigurationselemente haben dabei folgende Bedeutung:

Parameter

Bedeutung

jobsInProcessing.max

Die maximale Anzahl an PDF-Generierungen, die gleichzeitig bearbeitet werden dürfen.

contentServerconfig

Die zu verwendende Konfigurationsdatei für den Content-Server. Dies sollte entweder die Content-Server Konfigurationsdatei des Viewers selbst sein, oder eine Kopie davon.

ViewerServletUrl

Die URL, an die Statusupdates beim Beenden oder Fehler einer PDF-Erzeugung gesendet werden sollen. Dies ist normalerweise die URL der Harvester-Schnittstelle des Viewers.

Gegebenenfalls muss eine Kopie der ContentServer Konfiguration des intranda viewers an den in der Plugin-Konfiguration genannten Ort abgelegt werden.

Statusabfragen über REST-API

Der Status eines PDF-Auftrages kann über eine REST-Schnittstelle abgefragt werden. Den im Folgenden angegebenen URLs muss dabei jeweils die URL der REST-Schnittstelle des TaskManagers vorangestellt werden. Diese entspricht in der Regel der URL des TaskManagers, ergänzt um /rest. Folgende Anfragen werden unterstützt:

Details zum Auftrag: /viewerpdf/info/{id}

Dies gibt allgemeine Informationen zum PDF-Auftrag aus der TaskManager-Datenbank als JSON-Objekt zurück. Das Objekt hat folgende Eigenschaften:

Parameter

Bedeutung

pdfID

Der Identifier des PDF-Auftrages.

title

Der Titel des PDFs.

pages

Die Anzahl Seiten des PDFs.

size

Die Gesamtgröße in Byte aller für das PDF benötigten Bilder, oder aller benötigten Einzelseiten-PDFs, wenn diese existieren und für die PDF-Generierung verwendet werden können.

startDate

Der Zeitpunkt, zu dem der Auftrag entgegen genommen wurde. endDate Der Zeitpunkt, an dem der Auftrag abgeschlossen wurde, wenn zutreffend.

Position in der PDF-Queue: /viewerpdf/numJobsUntil/{id}

Dies gibt als einfachen Text die Anzahl an PDF-Aufträgen zurück, die vor dem Auftrag mit dem Identifier {id} in der Warteschlange stehen.

Anzahl Seiten vor bis zum Aufrag: /viewerpdf/numPagesBefore/{id}

Dies gibt als einfachen Text die Anzahl an Seiten aller PDF-Aufträge zurück, die vor dem Auftrag mit dem Identifier {id} in der Warteschlange stehen.

Aufträge vor dem Auftrag: /viewerpdf/jobsUntil/{id}

Dies gibt ein JSON-Objekt mit einer Liste aller PDF-Aufträge zurück, die vor dem Auftrag mit dem Identifier {id} in der Warteschlange stehen. Die Liste besteht aus Objekten mit den Eigenschaften, wie sie auch bei der Anfrage von Auftrags-Details erstellt werden.

Für alle Anfragen kann statt des Identifiers auch der Titel der angefragten PDF-Datei verwendet werden. In diesem Fall wird der jeweils letzte Auftrag mit diesem Titel verwendet.

Rückmeldung bei Abschluss

Nach Beendigung eines PDF-Auftrages, unabhängig von erfolgreicher oder fehlerhafter Durchführung, wird an die im TaskManager-Plugin konfigurierte viewerServletUrl ein Get-Request mit folgenden Parametern gesendet:

Parameter

Bedeutung

identifier

Der Identifier des Auftrages.

status

Der Status des Auftrages als String. Dieser ist entweder READY, wenn das PDF erfolgreich erzeugt wurde, oder ERROR, wenn der Auftrag aufgrund eines Fehlers abgebrochen wurde.

message

Dieser Parameter wird nur im Falle von status=ERROR angefügt, und beinhaltet die Fehlermeldung, mit der der Auftrag abgebrochen wurde.

Wenn ein Auftrag im TaskManager manuell abgebrochen wurde, wird keine Abschlussnachricht verschickt.

Stoppen des Plugins

Wird das Plugin gestoppt, wird die laufende PDF-Generierung nach Erzeugung der aktuell in Bearbeitung befindlichen PDF-Seite abgebrochen. Das aktuelle PDF gilt dann als noch nicht erzeugt. Nach dem nächsten Start des Plugins wird das aktuelle PDF erneut generiert. Dies gilt auch für einen unerwarteten Stopp des TaskManagers oder des gesamten Tomcat-Servers.

Das PDF wird innerhalb des TaskManager-Plugins erzeugt. Ein Stopp des TaskManagers beendet entsprechend auch die PDF-Generierung sofort. Auch hier gilt, dass das unterbrochene PDF nach einem Neustart des TaskManager erneut erzeugt wird.