Praktische String Funktionen in Javascript für InDesign und Web

Entfernt führende und beendende Leerzeichen

function trim (str) 
{
  return str.replace (/^\s+/, '').replace (/\s+$/, '');
}

Check, ob ein String leer ist, findet auch z.B. “    “

function isBlank(str) 
{
    return str.replace(/\s/g,"") == ""  ;
}

Checkt, ob ein String enthalten z.B. ob script in javascript enthalten ist – true.

function stringContains(str, needle )
{
    return str.indexOf(needle) != -1    
}

InDesgin Script – Text und ParagraphStyle exportieren nach Excel

Ich habe ein kleines Script geschrieben, welches seitenweise die Paragraphen ausliest und den Text sowie den ParagraphStyle in eine csv-Datei schreibt, die in Excel geöffnet werden kann, um so den Text dorthin zu exportieren und später zu übersetzen und zu reimportieren mittels InDesign’s DataMerge. Es wird für jede Seite des Dokuments eine csv-Datei angelegt:

#target InDesign
$.writeln ("extract Paragraph Text");

var allPages= app.activeDocument.pages;
for (i=0; i<allPages.length; i++)
{
    $.writeln (allPages[i].name);
    var allPageTextframes= allPages[i].textFrames;
    var csvPath = app.activeDocument.filePath + "/page" + i + ".csv";
    $.writeln (csvPath);
    var csv = File (csvPath);
    csv.encoding = "CP1252"; //Encoding for Windows/Excel    
    csv.open ("w");
    for (j=0; j<allPageTextframes.length; j++)
    {
        var allPageTextframeParagraphs= allPageTextframes[j].paragraphs;
        for (k=0; k<allPageTextframeParagraphs.length; k++)
        {
            var text = allPageTextframeParagraphs[k].contents;
            var paragraphStyleName = allPageTextframeParagraphs[k].appliedParagraphStyle.name;
            $.writeln (text);
            $.writeln (paragraphStyleName);
            if(text != "")
            {
                    var zeile = paragraphStyleName + " " + j + k + ";" + text;
                    csv.writeln (zeile);
             }
         }
     }
}

Adobe InDesign Script – Sprache aller ParagraphStyles ändern

Mit diesem Skript kann man die Sprache aller Paragraph Styles einfach ändern und z.B. auf italienisch setzen:

#target InDesign
$.writeln ("Change Language");
var allParagraphStyles = app.activeDocument.paragraphStyles;
for (i=1; i<allParagraphStyles.length; i++)
{
    $.writeln (allParagraphStyles[i].appliedLanguage.name);
    allParagraphStyles[i].appliedLanguage = "Italian";
    $.writeln (allParagraphStyles[i].appliedLanguage.name);
}

 

Adobe InDesign Scripten mit Javascript Tutorial

Adobe Indesign sowie Photoshop lassen sich mit Javascript plattformübergreifend auf MAC und PC skripten mit der Javascript Erweiterung ExtendScript von Adobe.

Über das Menü Fenster->Hilfsprogramme->Skripte werden die bereits mit gelieferten Skripte angezeigt. Eigene Skripte gehören in den Ordner Benutzer und haben die Endung .jsx. Um im Dateibrowser in das Verzeichnis zu gelangen, wo die Skripte zu finden sind, muss man einfach mit der rechten Maustaste auf das Skript und dann auf “Im Finder öffnen” klicken, so gelangt man am einfachsten zu den sehr tief verstecktem Ordner. Dort kann man dann neue eigene Skripte anlegen.

Zum testen kann die Datei “changeLanguage.jsx” im selben Ordner (bei mir /…/Library/Preferences/Adobe InDesign/Version 7.0/en_GB/Scripts/Scripts Panel) angelegt werden. Diese erscheint dann autotmatisch auch in InDesign.

Um die Dati zu bearbeiten, muss man einfach in InDesign rechter Maustaste auf die Datei und Skript bearbeiten auswählen und es öffnet sich der Editor/Light IDE von Adobe: ExtendScript Toolkit.

Wichtig ist, als erstes einzustellen, für welches Programm das Skript laufen soll, in unserem Fall: Adobe InDesign CS5 auswählen im Dropdown oben rechts.

Außerdem sollte die Autovervollständigung aktiviert werden: ExtendScript Toolkit->Voreinstellungen->Hilfe->Autom. Vervollständigung aktivieren.

Beispiel 1: Hallo Welt

Das Hallo Welt ist schnell geschrieben und beinhaltet vorher noch eine Direktive auf InDesign, damit klar ist, für welches Programm das Skript laufen soll:

#target InDesign
alert("Hallo Welt");

Das ganze kann mit F5 oder Apfel+R ausgeführt werden.

Debuggen lässt sehr gut mit der Funktion writln für Strings, die im Fenster Javascript-Konsole ausgegeben wird:

#target InDesign
//alert("Hallo Welt");
$.writeln ("Konsole log");

Ich hatte das Problem, dass Kommentare ausgeblendet wurde, das lag daran, dass die Schriftart für Kommentare nicht installiert war. Einfach Schriftart ändern: ExtendScript Toolkit->Voreinstellungen->Schriften und Farben:

  • alle Anzeigeelemente entkreuzen
  • Comment /**/ ->Schrift: Verdana auswählen
  • Comment // ->Schrift: Verdana auswählen

Eine Referenz/Übersicht über das Objekt Model von InDesign findet man hier.

Ich empfehle das sehr gute Buch zum Einstieg in InDesign, mit dem ich auch angefangen haben und sehr zufreiden war: