Imagefooter für Retro-Digitalisate

Übersicht

Imagefooter werden unter die ausgelieferten Webcachebilder ab einer konfigurierten Größe geklebt und in den PDF-Derivaten eingebaut. Der Usecase ist normalerweise, dass sich die Verantwortlichen bzw. Sponsoren auf den Images verewigen wollen. Ein Beispiel:

Beispiel für Imagefooter

Konfiguration und Resourcen

Auf der Instanz wird Footersupport aktiviert indem in der server.ini die Option webcache.footerSizes auf 504 gesetzt wird. Damit ist auch gleichzeitig die minimale Webcachestufe konfiguriert, ab welcher Footer gebaut werden sollen. Für einzelne Domains werden Footer aktiviert indem dconfig.dfgfooter.on=True gesetzt wird.

Das Ergebnis der Konfiguration wird auf der Adminseite admin/footer visualisiert. Dort lässt sich auch der Cache zurücksetzen.

Domainkonfiguration

Konfigurationsoptionen von dconfig.dfgfooter:

writing_size (integer, default=900)

Ab welcher Webcachstufe wird Text in den Footer eingefügt. Bei einem kurzem Text, kann der Wert reduziert werden z.B. auf 500 um für alle Webcachestufen den Text anzuzeigen.

larger_size (integer, default=1000)

Verwende größeres Footertemplate ab dieser Webcachestufe.

font_file, font_size, font_small_size. font_color, footer_color

Einstellung der Schriftarten mit sinnvollen Defaults (FreeSerif.ttf, 12). Siehe dconfigspec.

footer_height, footer_small_height

Höhe des Footertemplates. Die Defaults sind 50px für die große Version und 30px für die Kleine.

embed_purn (boolean, default=true)

Bette Pageurns im Footer ein, falls vorhanden.

fragment_purn (boolean, default=false)

Experimentelle Pageurn-V2.0 Funktionalität. Transformiere urn:nbn:de:gbv:3:1-17-p5-4 nach urn:nbn:de:gbv:3:1-17/fragment/page=5

Weitere Konfigurationsoptionen aus dconfig.connectors die Text zwischen den beiden Logos steuern:

institutionFooterName und institutionName

Name der Institution. Wenn institutionFooterName leer ist, dann wird ein Fallback auf institutionName ausgeführt

# Beispiel Domainconfig
[dfgfooter]
    on = true
    font_file = arial.ttf
    font_size = 16
    font_small_size = 11
    embed_purn = false
    writing_size = 600
    larger_size = 504

[connectors]
    institutionFooterName = Landebibliothek

Logos

Ein weiterer Teil der Konfiguration besteht aus der Bereitstellung der Logos, die in den Footer eingebettet werden sollen. Diese werden im Domainverzeichnis unter "static/graphics/connectors/ abgelegt.

footerLogoSponsor.png

Rechts im Footer. Variable Dimensionen. Normalerweise .png. Beispiel:

Beispiel Footer-Logo rechts

footerLogoInstitution.png

Links im Footer. Variable Dimensionen. Normalerweise .png. Beispiel:

Beispiel Footer-Logo links

Prozess

Imagefooter werden on-demand gebaut. Das heißt, wenn eine Webcachestufe angefordert wird, dann wird ein gecachtes passendes Footerimage unter das Webcachebild geklebt und die Kombination in einem für Footer reserviertes Verzeichnis (parallel zum Webcacheverzeichnis, webcache/1000 vers. webcache/1000f) abgespeichert. Weitere Zugriffe auf das Webcache+Footer-Bild sind somit schnell.

Die Footertemplates werden In-Memory gecached. Zugriff auf den Cache ist über component("vls.logo_cache").logoCache möglich. Dort sind PIL-Images für jede Domain in logoCache._domains abgelegt. Der Cache wird beim ersten Zugriff auf Footerimages initialisiert und lässt sich via logoCache.clear() zurücksetzen.

Die Footer-API besteht im Grunde genommen nur aus component("vls.dfgfooter") und der Funktion vls.dfgfooter.addFooterByPath(imgfile, otid, odid). Der einzige Konsument von addFooterByPath ist die Webcache-Komponente. Dort wird beim Request eines Webcachebildes anhand der Domainkonfiguration entschieden ob und welcher Footer unter das angeforderte Webcacheimage gehängt wird.

Hinweis

Beim on-demand Konkatenieren des Footerimages mit dem Webcacheimage ist eine weitere JPEG-Kompression notwendig. Footer verschlechtern also die Imagequalität.

Die Alternative wäre die Footer-Webcachestufe parallel zur Erzeugung des Webcacheimages aus dem Archivimage zu erzeugen. Das würde aber bedeuten, dass man die Webcachedaten dupliziert. Diese Variante war VLS-Verhalten bis V2.0, aus Effizienzgründen haben wir aber auf die on-demand Variante umgestellt.

Jobs

Ein weiteres Derivat, welches mit den Footerimages versorgt wird, sind die PDFs. Dafür muss beim PDFJob die Option pdfFooterImage=True gesetzt werden.