InDesign-Scripts: verborgene Funktionen
Adobe hat die Scripting-Fähigkeit von InDesign mit Version CS3 nochmals massiv ausge-baut. Dieser Artikel beschreibt die besten Adobe-Scripts und stellt weitere kostenlose vor.
HAEME ULRICH Ein Script ist eine Befehlsfolge, die in einer ausführbaren Datei zusammengefasst ist. Ein Script kann grundsätzlich nicht mehr, als das Programm selbst auch kann. Es nimmt einem aber die Eingabe der Befehle von Hand ab und steigert damit die Produktivität repetitiver Arbeiten innerhalb von InDesign. Somit ist auch die Abgrenzung zu Plug-ins klar: Die haben zum Ziel, ein Programm mit neuen Funktionen zu bestücken.
InDesign lässt sich in unterschiedlichen Sprachen «scripten». Sowohl auf dem Macintosh wie unter Windows laufen JavaScripts. Damit man sie schreiben und debuggen kann, liefert Adobe das ExtendScript Toolkit mit. Das kommt bei der Installation von InDesign automatisch zu den Dienstprogrammen.
Alternativ können auch plattformabhängige Scripts als AppleScript (Mac) oder Visual Basic (Windows) geschrieben werden.
Wir bevorzugen JavaScripts, um die Entwicklung in einem Wisch für beide Plattformen zu erledigen. Dies hat aber den Nachteil, dass solche Scripts keine programmübergreifende Arbeiten automatisieren können. In solchen Fällen wäre dann eine Mischform aus JavaScript und zum Beispiel AppleScript sinnvoll.
Die Scripting-Unterstützung innerhalb InDesign CS3 wurde massiv erweitert. JavaScripts können jetzt vor ihrem Einsatz kompiliert werden. Dadurch ist der Code binär und kann nicht einfach geklaut werden. Dies wird bewirken, dass die wirklich guten Programmierer jetzt auch in die InDesign-Scripting-Welt einsteigen, weil sie damit nicht mehr ihr ganzes Know-how verschenken. Wir als Anwender profitieren von neuen und besseren Scripts.
Dann können Scripts jetzt auf Events reagieren. Das heisst, dass ein Script nach einem speziellen Ereignis automatisch startet. So ein Event könnte zum Beispiel das Öffnen einer Datei sein.
Für den täglichen Umgang mit Scripts ist es eine Erleichterung, dass sie nicht ausschliesslich über das Scripts-Bedienfeld oder über die Schnell-anwenden-Funktion gestartet werden müssen. Für InDesign CS3 kann man nämlich Scripts so schreiben, dass sie sich in die Menüs einhängen. Dadurch merken Anwender nicht einmal, ob es sich nun um eine Funktion oder nur um ein Script handelt. Adobe selbst hat für CS3 auf diese Möglichkeit zurückgegriffen. Der XHTML-Export ist nämlich nichts anderes als kompilierte JavaScripts, die in das Menü eingehängt werden.
Das Schreiben von Scripts ist Sache der «Coder», von Leuten mit Programmiererfahrung und Interesse an technischen Details. Es geht nicht nur darum, die Scriptsprache zu verstehen, auch das Objektmodell des Programms, das automatisiert werden soll, muss bekannt sein. Dieses Modell ändert sich in der Regel mit neuen Versionen. Wer anspruchsvolle Scripts schreiben will, muss sich daher mehr als nur nebenbei mit der Materie befassen. Das Anwenden von Scripts in der täglichen Produktion ist hingegen spielend einfach. Genau da wird es interessant. Es gibt unzählige, frei verfügbare Scripts für Adobe InDesign.
Die Scripts müssen Sie in der Regel selbst in das richtige Verzeichnis kopieren. Installer dafür zu schreiben, wäre wie mit Kanonen auf Spatzen schiessen. Holen Sie sich für die Installation das Scripts-Bedienfeld aus Automatisierung. Klicken Sie dann mit der sekundären Maustaste auf Benutzer im Bedienfeld und wählen Sie dort Im Finder anzeigen. Sie landen so im Ordner Scripts. Dort wechseln Sie in den darin enthaltenen Ordner Scripts Panel. Da hinein kopieren Sie alle Scripts, die Sie installiert haben wollen.
Zur besseren Organisation der Scripts können Sie sich in Scripts Panel auch eine eigene Ordnerstruktur anlegen und die Scripts hineinkopieren.
Die meisten Scripts werden Sie über das Automatisierung) mit einem Doppelklick auf das entsprechende Script starten.
Seit CS3 schätze ich es, Scripts mit Schnell anwenden anzustossen. Dazu drücken Sie Apfel-Return (Windows Ctrl-Return), um das Schnell-anwenden-Bedienfeld zu öffnen. Klicken Sie, wenn Sie zum ersten Mal auf diese Weise Scripts ausführen, auf den Abwärtspfeil im Bedienfeld, um anzugeben, dass Schnell anwenden Scripts künftig und überhaupt auch in die Trefferliste aufnimmt.
Der Cursor ist jetzt im Suchfeld von Schnell anwenden. Schreiben Sie nun s: (um die Suche auf Scripts zu beschränken), gefolgt vom Namen oder den Anfangsbuchstaben des gesuchten Scripts. Ist das Script als Treffer markiert, lösen Sie es mit Return aus.
Adobe liefert mit den Samples eine stattliche Zahl Scripts mit, die es zu erforschen lohnt! Mit CS3 werden diese Samples mit InDesign installiert und sind so auch sofort einsatzbereit. Sie finden sie im Scripts-Bedienfeld unter Samples. Ich nehme für den Artikel die JavaScript-Version, um plattformneutral zu sein. Grundsätzlich gibt es aber diese Adobe-Scripts auch in den Varianten Visual Basic und AppleScript.
Die Highlights aus der Adobe-Scriptsammlung sind:
AddPoints.jsx: fügt dem ausgewählten Objekt weitere Ankerpunkte zu. Jeweils einen zwischen zwei bestehende. Das ist genial, um als Basis für eine eigene Form eine feste Form zu nehmen und die dann zu erweitern.
AdjustLayout.jsx: schiebt Objekte über das gesamte Layout nach vorgegebenen Werten. Diese können für linke und rechte Seiten unterschiedlich sein.
CornerEffects.jsx: Dieses Script brauche ich, um nur eine Ecke eines Objektes abzurunden.
CropMarks.jsw: setzt um die Auswahl Schnittzeichen sowie Passermarken und erstellt sogar eine separate Ebene.
FindChangeByList.jsx: lädt eine frei konfigurierbare Liste von Suchen/Ersetzen-Befehlen aus einer externen Textdatei und führt sie aus. Dabei werden auch die neuen Optionen aus CS3 unterstützt (Objekt, Glyphe und Grep…). Viele brauchen dies, um die üblichen Typokorrekturen in gelieferten Daten abzuarbeiten.
LabelGraphic-Menü.jsx: Dieses Script ist nach dem Start als Menübefehl auf der sekundären Maustaste. Wählen Sie eine Grafik aus, können Sie diese über die sekundäre Maustaste mit Pfad, Name und Metadaten beschreiben lassen. Nach einem Neustart von InDesign ist die Funktion wieder weg.
MakeGrid.jsx: unterteilt ein Objekt in die gewünschte Anzahl Einheiten. Das klappt sogar mit Bildern!
PlaceMultipagePDF.jsx: ein Script der produktiveren Sorte! Es importiert eine mehrseitige PDF-Datei und legt je eine Seite aus dem PDF auf eine InDesign-Seite.
SortParagraphs.jsx: sortiert ausgewählte Absätze alphabetisch.
SplitStory.jsx: teilt eine Textverkettung in einzelne Rahmen auf. Dabei behält jeder Rahmen den Inhalt bei.
TabUtilities.jsx: setzt einen Tabulator an den rechten Rand der Spalte (des Textrahmens). Genial, um auspunktierte Inhaltsverzeichnisse zu formatieren!
Im Internet finden Sie weitere hilfreiche InDesign-Scripts. Die meisten sogar kostenlos. Adobe selbst bietet eine Plattform, auf der Dritte ihre Scripts zur Verfügung stellen können: www.adobe.com/exchange/
Viele Coder posten auch fixfertige Scripts in Foren. So zum Beispiel bei www.hilfDirSelbst.ch oder im InDesign-Scripting-Forum auf der US-amerikanischen Adobe-Website.
Hier noch zwei Scripts, die ich besonders schätze:
ExportAllText.jsx: Dieses Script von Olav Martin Kvern exportiert den gesamten Text einer InDesign-Datei in eine einzige Textdatei. Dabei wird auch Text aus unterschiedlichen Textverkettungen zusammengeführt. Beim Export kann man wählen, ob nur Text, RTF oder InDesign-Tagged-Text generiert werden soll. Zwischen einzelnen Textverkettungen für das exportierte Textfile können auch Trennlinien definiert werden.
ProperFraction 1.1-DanRodney.js: erstellt aus markierten Zahlen saubere Brüche. Dies ist notwendig, wenn man nicht auf die Bruchfunktion in Open-Type-Schriften zurückgreifen kann.
Schreiben Sie mir eine E-Mail, wenn Sie die beiden Scripts wollen (ulrich@ulrich-media.ch) oder geben Sie die Namen in Google ein. So finden Sie sie auch.
Unter dem Namen moonBox stellen wir – ulrich-media und moonsoft.ch – kostenlos eine Scriptsammlung für InDesign CS3 bereit. Die moonBox umfasst momentan vier Scripts. In nächsten Versionen kommen weitere hinzu. Dabei fliessen auch Wünsche und Anregungen von Ihnen als Anwender mit ein.
moonFlight.jsxbin: Die Preflight-Funktion von InDesign CS3 prüft leider die Auflösung platzierter Bilder nicht. Eigentlich schade, weil InDesign dies zumindest bei offenen Bildformaten problemlos könnte.
Dieses Script prüft bei allen platzierten Bildern in Pixelformaten Auflösung und Farbraum und schreibt die Resultate in eine Tabelle in einer neuen InDesign-Datei.
moonJump_0-2-jsxbin: Situation: Der Textcursor ist in der letzten Spalte unten an der Seite. Sie müssen eine neue Seite einfügen und auf dieser in die erste Spalte verketten. Genau das ist mit einem Doppelklick auf moonJump möglich.
moonOver.jsxbin: sucht im Dokument nach Übersatztext. Das ist Text, der in einer Textbox nicht mehr Platz findet, weil die Box zu klein und keine weitere damit verkettet ist. Mit diesem Script können Sie nach Übersatztext im gesamten Dokument suchen. Findet das Script solchen, kann man die betroffene Textbox direkt aus dem Dialogfeld anspringen.
Im Gegensatz zu vielen anderen vergleichbaren Scripts sucht moonOver auch in gruppierten Textrahmen.
moonTableAdjust.jsxbin: Mit diesem Script können Sie die Gesamtbreite einer Tabelle proportional auf die Breite des Textrahmens anpassen und so die Gesamtbreite von Tabellen numerisch einstellen.
Die moonBox können Sie kostenlos samt Manual aus dem Download-Bereich des Publisher herunterladen.
In InDesign CS3 kann es vorkommen, dass Scripts plötzlich nicht mehr laufen. Adobe-Mitarbeiter und Scripting-Experte Olav Martin Kvern hat ein kleines Script geschrieben, mit dem Sie die Scripting-Voreinstellungen von InDesign zurücksetzen, damit Scripts wieder wie gewohnt laufen. Auch dieses Script finden Sie im Download-Bereich des Publisher. Es heisst cleaning-scripting-prefs.jsx.
Mit Scripts legen Sie repetitive Arbeiten auf einen Doppelklick. Viele unentdeckte Scripts werden bereits von Adobe mit der Version CS3 vorinstalliert. Aber auch im Internet stehen tolle Exemplare zur Verfügung – viele davon kostenlos.
Für bestimmte Layoutaufgaben kann man spezielle, auf die eigenen Bedürfnisse abgestimmte Scripts schreiben lassen. Immer häufiger kommen heute Scripts zum Einsatz, wofür früher kostspielige Plug-ins programmiert werden mussten.