InDesign und JavaScript: Schön gedacht, nur nicht zuende.

Ich habe mich gestern Abend und heute MIttag recht ausführlich mit der Datenzusammenfügungsfunktion von InDesign auseinandergesetzt. Dabei habe ich festgestellt, dass die zwar praktisch ist, dass die große Einschränkung aber ist, dass Zeilenumbrüche in der Quell-CSV nicht vernünftig verarbeitet werden. Ich habe dann die CSV mittels GREP und Textwrangler soweit bearbeitet dass alle Umbrüche außer die am Ende jeder Zeile gelöscht wurden. Dann hat der Import geklappt, aber schön ist das ja bei längeren Texten nicht.

Ich habe auch versucht mittels JavaScript qr-codes während des Importprozesses automatisch zu erzeugen, bin aber daran gescheitert, dass es zwischen den einzelnen Datenzeilen keinen Event gibt auf den ich mit einem EventListener im JavaScript hören und mit einem zwischengeschobenen Script reagieren hätte können. Da muss Adobe nachbessern. Und auch bei der Dokumentation muss Adobe nachbessern. Selbst liefern sie keine wirkliche Dokumentation zu den eingebauten Funktionen. Das MIT hat aber da mal was zusammengeschrieben…

Also habe ich versucht ein eigenes Script zu schreiben das durch alle Seiten durchfliegt die richtigen Elemente auswählt dort die Daten ausliest (ein Textfeld mit der URL) und das an das Element mit dem qr-Code drin übergibt auf dass ein neuer qr-code generiert wird. Soweit müsste(!) es funktionieren: Nur leider sagt mir InDesign immer dass das TextFeld mit der URL inValid ist. Bisher habe ich den Fehler nicht gefunden.

Und dann war ich unzufrieden damit, dass die Zeilenumbrüche im Import gelöscht werden müssen und dachte mir, dass man dann wohl die Daten mit Umbrüchen in einem csv-Datenfeld kodieren müsste. klassisches wäre urlencode() im JavaScript gewesen, aber dann müsste ich irgendein Script schreiben, das mir die CSV einliest, kodiert und wieder ausgibt. Ich habe jQuery.csv gefunden was das einlesen und kodieren, aber leider nicht wieder ausgeben kann. In Entwicklung 🙁 – Diese verdammten CSVs immer 🙁

Dann dachte ich, dass ich vielleicht einfach die Datenbank zum kodieren verwende. MySQL in dem die Daten vorliegen unterstützt aber keine native Codierung, d.h. ich müsste auf die Daten über Python&Co zugreifen, auslesen, kodieren und wieder abspeichern. Würde gehen, dauert aber das Python-Script zu schreiben. So geübt bin ich zur Zeit nicht.

Jetzt habe ich herausgefunden, dass ein netter Mensch für googleDocs ein Script geschrieben hat, das base64-encoding als google.calc-Funktion zur Verfügung stellt. base64 wird genutzt um emails durch den Äther zu schicken. Und dann habe ich crypto-js gefunden, was das im InDesign wieder rückgängig machen könnte.

Und dann stelle ich fest, dass ich ja auch einfach im google.calc ein eigenes Script schreiben könnte, dass mir mit der JavaScript-Standardfunktion urlencode() meine Daten kodieren könnte. Und urldecode() müsste auch in InDesign einfach so möglich sein. *Handvornkopfklatsch*

So viel rumgegoogle, wenn man auch es einfach einfach machen hätte können 😉 Statt mit blöden intermediate-csv-daten einfach in den Originaldaten arbeiten und gut ist!

Nur muss ich dann immer noch herausfinden wie ich die Daten in den verdammten Textfeldern anfasse und verändere. Das ist aber ein Projekt für später, jetzt muss ich mal was sinnvolles machen.

Leave a Reply

Your email address will not be published. Required fields are marked *