Comment on page
4.16. Erstellung eines PDF-Dokumentes für ein gesamtes Werk
Dieses Plugin erstellt ein PDF-Dokument für einen Goobi-Vorgang und speichert es im Dateisystem ab. Für das Inhaltsverzeichnis wird dabei die Struktur der METS-Datei des Goobi-Vorgangs verwendet, für die Seiteninhalte die in der METS-Datei referenzierten Bilddateien.
Je nach Konfiguration können - sofern vorhanden – auch bereits existierende Einzelseiten-PDFs für die Erzeugung des Gesamt-PDFs verwendet werden. Damit geht die Erstellung des PDFs erheblich schneller, da keine Konvertierung stattfinden muss, und Volltexte aus den Einzelseiten-PDFs übernommen werden können.
Alternativ können Volltexte auch aus ALTO-Dokumenten in das PDF geschrieben werden. Dies ist ebenso bei der Erstellung aus Einzelseiten-PDFs möglich, wird jedoch unterdrückt, wenn diese bereits Volltexte beinhalten.
Die Erstellung eines PDFs wird über den TaskClient durch den Aufruf angestoßen:
/usr/bin/java -jar /opt/digiverso/itm/bin/TaskClient.jar
-itm http://localhost:8080/itm/service
-s {processpath}
-d {processpath}/ocr/{processtitle}_pdf
-e
-i {stepid}
-T {processtitle}
-t PdfCreation
-n template
-gid {processid}
Die innerhalb des TaskClient-Aufrufs zu übergebenen Parameter haben folgende Bedeutungen:
Parameter | Mögliche Goobi Variable | Bedeutung |
-itm | http://localhost/itm/service | URL zur Schnittstelle des intranda TaskManagers |
-e , --returnError | - | Wenn angegeben, beendet sich der TaskClient mit einem Fehlercode, um das automatische Fortschreiten im Workflow zu unterbinden |
-p | 0 – 10 | Priorität zur Verarbeitung dieses Jobs |
-gid | {processid} | ID des Goobi-Vorgangs |
-i | {stepid} | Die ID des Arbeitsschrittes, der den Aufruf startet |
-T , --title | {processtitle} | Der Vorgangstitel in Goobi, für den der Aufruf gestartet wird |
-t , --jobtype | PdfCreation | Der Typ des Jobs |
-n , --templatename | template | Wird in diesem Plugin nicht verwendet. |
-s , --source | {processpath} | Pfad zum Verzeichnis, in dem sich die Datei meta.xml befindet |
-d , --destination | {processpath}/ocr/{processtitle}_pdf | Pfad zum Ordner, in den das PDF geschrieben werden soll, oder alternativ zur PDF-Datei die erstellt werden soll |
Einzelseiten-PDFs und ALTO-Dateien werden aus dem Unterordner
ocr
des source-Ordners - innerhalb dessen sich die Datei meta.xml
befindet - aus den Unterordnern <Vorgangsname>_pdf
bzw. <Vorgangsname>_alto
geladen. Die Dateien müssen, bis auf die Endung, so benannt sein wie die Bilddateien in der METS-Datei.Ist der Zielordner, in den die PDF-Datei geschrieben wird, identisch mit dem Ordner der Einzelseiten-PDFs, so wird letzterer umbenannt in
<Vorgangsname>_pdf_abbyy
.Das Plugin kann ohne eigene Konfigurationsdatei verwendet werden. In diesem Fall werden, sofern vorhanden, Einzelseiten-PDFs und Volltext-ALTO-Dateien für die Erstellung verwendet. Für alle weiteren Parameter der PDF-Erstellung wird die von Goobi bereitgestellte intrandaContentServer Konfigurationsdatei verwendet.
Sollte ein anderes Verhalten gewünscht sein, so muss folgende Konfigurationsdatei angelegt werden:
/opt/digiverso/itm/config/pdfCreationConfig.xml
Diese Datei hat folgenden Inhalt:
<config_plugin>
<usePdfDirectory>[true/false]</usePdfDirectory>
<useAltoDirectory>[true/false]</useAltoDirectory>
<contentServerConfigPath>
/path/to/my/content/server/config.xml
</contentServerConfigPath>
</config_plugin>
Mit dem Parameter
usePdfDirectory
lässt sich die Verwendung von Einzelseiten-PDFs an bzw. abschalten; mit dem Parameter useAltoDirectory
die Verwendung von ALTO-Dateien zur Integrierung von Volltexten.Der Parameter
contentServerConfigPath
kann verwendet werden, um einen Pfad zu einer alternativen ContentServer-Konfiguration anzugeben, falls ein anderes Verhalten erwünscht ist als für die PDF-Erzeugung in Goobi.Nach dem Stoppen des Plugins wird eine gerade laufende PDF-Erzeugung beendet, bevor das Plugin beendet wird. In der Warteschlange verbleibende Jobs werden anschließend nach dem Neustart des Plugins bearbeitet.
Die Erzeugung des PDFs erfolgt im TaskManager-Plugin. Beendet man also den TaskManager selbst, wird die Erzeugung sofort abgebrochen. Der Job ist dann jedoch weder in der Warteliste, noch gilt er als beendet oder abgebrochen. Der Job muss in diesem Fall manuell abgebrochen und erneut gestartet werden.