Comment on page
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 Goobi viewer mit einer Versionsnummer 3.1 oder neuer erforderlich, der über einen Zugriff auf einen TaskClient verfügen muss, die bereits im Lieferumfang der Goobi-viewer-Installation enthalten sein kann.
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 |
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 Goobi viewers an den in der Plugin-Konfiguration genannten Ort abgelegt werden.
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:
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. |
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.
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.
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.
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.
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.