Automatisierte Generierung von Bild-Präsentationen mit bash
Nach einer Web-Anwendung zur virtuellen Kategorisierung großer Bildmengen mussten diese Bilder nun noch in beliebigen, oft kurzfristig zu ändernden Kombinationen, Ergänzungen und Streichungen vor Sendetermin in Präsentationen
eingefügt werden.
Zeit also für den Ehemann, auch diesen Schritt endlich konfigurierbar zu automatisieren. (Wie man hierfür außerdem große Bilderordner sowohl unter Photoshop, besser aber
natürlich GIMP/Script-Fu/bash vollmaschinell filtert und exportiert, ist hier beschrieben).
Selbst wenn das Ausgabeformat der unfreien Welt oft Powerpoint darstellt, lassen sich große bildlastige Präsentationen zunächst für LibreOffice-Impress generieren
und anschließend als *.ppt wandeln (sofern man die somit letzte Gelegenheit, ein freies, standardisiertes, scriptbares Format zu verwenden, ungenutzt verstreichen lassen möchte) .
Nun bieten uns freilich nicht LibreOffice irgendeine Generierungs-Möglichkeit, sondern ebenso selbsterklärend nur die seit Jahrzehnten unverzichtbaren GNU/Linux-Werkzeuge
der Kommandozeile.
Dabei machen wir uns zunutze, dass alle (!) LibreOffice-Ausgabeformate *.odt, *ods, *.odp und *.odg lediglich zip-Verzeichnisse
aus mehrheitlich XML-Dateien darstellen und können das Problem so GNU/Linux-typisch auf eine reine Textverarbeitungsaufgabe zurückführen.
Überblick
Wir
- erstellen oder übernehmen eine Beispieldatei mit der gewünschten Bildpositionierung (im Fall meiner Gemahlin eine *.ppt-Datei mit Querformat zur Präsentation auf einem iPad (dort läuft kein Linux,
aber es soll reine Anwender geben, welche an der netten Anmutung oberflächlichen Gefallen finden))
- Übernommen wird lediglich die Position des Bildes
- Die Default-Breite wird im Script voreingestellt (oder von der Kommandozeile übernommen)
- Die Höhe eines jeden Bildes wird via Imagemagick aus dem Seitenverhältnis desselben und der voreingestellten (mit Option -w überschreibbaren) Breite passend errechnet
- entpacken dieses,
- erstellen aus einzelnen Dateien im entpackten Verzeichnis Hülsen und Templates für Ersetzungen,
- zippen das gesamte Verzeichnis zu einer Template.odp und
- verwenden fürderhin das im Downloadverzeichnis befindliche Script mypic2impress, um einzelne/mehrere Bilder oder
alle Bilder eines Verzeichnisses/einer Konfigurationsdatei in jeweils einzelne oder zusammenhängende Präsentationen zu wandeln. Dort findet sich auch das nach den Schritten unten
für voriges Script erstellte Template Impress_Vorlage.odp
- Eine Wandlung von *.odp nach *.ppt(x) ist auf der Kommandozeile mit unoconv -f ppt(x) Hugo.odp möglich
Vorgehen
Nachdem in der Vorlage (hier angenommen Vorlage.odp) ein einziges Beispielbild eingefügt und dazu alle Wunsch-Einstellungen getätigt (eine *.ppt-Vorlage außerdem in
*.odp-Format gewandelt) wurden, entpacken wir diese mit unzip Vorlage.odt und erhalten eine Struktur ähnlich der folgenden
Anschliessend
- fügen wir in die einzige Zeile der Datei content.xml mit dem vi-Befehl :s/</\r/g zu jedem Tag-Beginn als Arbeitserleichterung einen Zeilenumbruch ein,
- die Zeilenumbrüche können verbleiben und werden von mypic2impress bei Generierung der Präsentation beseitigt
- speichern ebendort das gesamte Tag <draw:page ...> ... </draw:page> als Datei pagetag und ersetzen das gesamte Tag mit dem Platzhalter
placeholder_content_pages (im Bild unten zu besserer Lesbarkeit mit Leerzeilen abgetrennt, welche verbleiben können)
- ersetzen in pagetag folgende 4 Parameter ...
- ersetzen in META-INF/manifest.xml die Bild referenzierende Zeile mit placeholder_manifest_pictures
- und in der an diese Stelle einzufügenden Datei manifesttag die Bildangabe durch placeholder_manifesttag_picture
- Schließlich löschen wir die Vorlage mit rm Vorlage.odp aus dem entpackten Verzeichnis und packen alle Bestandteile mit zip -r Vorlage.odp * wieder zu unserer Vorlage,
diesmal als parametrisiertes Template, zusammen
Wurden alle Pfade in mypic2impress angepasst, können mit mypic2impress nun beliebige Bild-Präsentationen einzeln, kombiniert, aus Verzeichnissen, Konfigurationsdateien oder dediziert im Batch
erstellt werden
Impressum und Datenschutzerklärung