Ein Projekt, das pixelstaub seit einigen Jahren betreut, ist der automatische Satz des Lions Club International Mitgliederverzeichnisses. Das rund 1.200 Seiten starke Buch (siehe Bilder) erscheint jährlich und wurde bis 2012 händisch von einem dreiköpfigen Grafikerteam in mehreren Wochen gesetzt und umbrochen.
2012 kontaktierte mich die Bochumer Druckerei Schürmann&Klagges um mich mit der Automatisierung des Workflows zu beauftragen.Datenbasis hierfür bildete eine 150 MB große XML-Datei – was nur im ersten Moment prima (cool: „yes: strukturierte Daten“ …) klingt …
Aufgrund der Dateigröße weigerte sich nämlich InDesign schlichtweg, das XML-File zu importieren und quittierte das Bemühen jeweils mit einem Absturz (womit auch eine Verschlankung des XML – durch XSL – während des Imports gestorben ist). Damit nicht genug: Tatsächlich weigerten sich selbst an einem sehr leistungsfähigen Mac-System sämtliche Texteditoren, das aus mehreren Millionen Codezeilen bestehende Datenfile zu öffnen.
Abhilfe schaffte eine Kooperation mit der Programmiererin Emanuela Hochwieser. Gemeinsam entwickelten wir einen mehrstufigen Workflow.
Im ersten Step verschlankt ein php-basierter Algorithmus die Daten, fasst diese zusammen, sortiert und liefert das daraus resultierende XML so, wie es im Nachfolgeschritt im InDesign gebraucht wird.
Diese Daten werden anschließend automatisch mit Formatierungen (etwa Tabellen) angereichert und fließen nach InDesign.
Dort erledigt ein Zusammenspiel aus einem Template und einigen Skripten die restliche Arbeit, baut die benötigten Seiten (basierend auf dem vom Kunden gewünschten Seitenumfang) auf, wendet definierte Umbruch- und Satzregeln an generiert lebende Kolumnentitel (die deutlich über inDesigns Bordmerkmale hinausgehen) und erzeugt einen alphabetischen Index.
Vom Import der Daten ins System bis zur druckfertigen PDF-Datei vergehen etwa 35 Minuten (eine Arbeit, die zuvor über Wochen von einem Dreierteam aus erfahrenen Grafikern händisch geleistet wurde). Nach dem automatischen Satz wird das Buch in einer Auflage von 50.000 Stück gedruckt.
Da es sich bei den Verzeichnissen um sensible Adressdaten handelt, kann ich hier aus Kunden- und Datenschutzgründen leider keine Innenseiten zeigen.
Anbei aber noch ein paar Impressionen aus der Druckerei (eine Halle voller Bücher, die durch unseren Algorithmus generiert wurden live zu sehen – das macht dann – neben der tollen Zusammenarbeit mit dem Auftraggeber – WIRKLICH mal richtig Spaß 🙂
[…] 2) Du musst monatlich für einen Verein eine zweispaltige Namensliste erstellen und bekommst eine XML-Datei. Darin enthalten sind die Infos „Geburtsdatum, Herr/Frau, Name, Vorname, Mitglied seit“). Der Verein möchte die Liste aber wie folgt: So geordnet, dass die Person, die am längsten dabei ist, ganz oben steht und das neuste Mitglied am Ende. Zudem soll nicht das Jahr des Eintritts aufgeführt werden, sondern wie lange das entsprechende Mitglied im Verein ist (sprich: Du musst das ausrechnen), zuerst aufgeführt werden soll der Vorname, dann der Nachname und über der Liste eine Angabe, wieviel Frauen und wieviel Männer sich aktuell im Verein befinden (sprich: hier müsstest Du jeweils die Frauen und Männer zählen). Das klingt auch ohne Scripting machbar. Ersetze nun einfach gedanklich mal „Verein“ durch „Organisation“ und denke an viele, viele Mitglieder – Spaß klingt anders, oder? Skripte allerdings sind wie geschaffen für sowas: XML-Elemente zählen und auf einen bestimmten Inhalt prüfen, sortieren – und nach festen Regeln umbrechen (beispielsweise: die Daten eines Mitglieds dürfen nicht über zwei Spalten fließen). Stelle Dir nun vor, die Organisation will irgendwann auch noch die Telefonnummern aufführen und zwar nicht in der Form, wie sie im XML stehen, sondern schön spationiert und die Vorwahl in runden Klammern statt durch „/“ abgetrennt. Stelle Dir nun 1200 Seiten vor – und Dich, wie Du das Monat für Monat per Hand machen musst. Solche Jobs schreien förmlich danach „nimm ein Skript – man kann das automatisieren“. Auch dieses Szenario – in etwas größerem Umfang – hat eine wahre Geschichte. […]