[GastForen Programme Print/Bildbearbeitung Adobe InDesign Indesign – Java-Scripting Mac

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Indesign – Java-Scripting Mac

turtle
Beiträge gesamt: 180

29. Okt 2006, 16:58
Beitrag # 1 von 18
Bewertung:
(4579 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

gibt es für Java, analog zu AppleScript ein Funktionsverzeichnis (Liste der Objekte) für Indesign CS2 auf dem Mac, das man im Editor anzeigen lassen kann?

Habe momentan das Adobe ExtendScript Toolkit in Gebrauch.

Oder welche Editoren empfehlen sich für Java-Programmierung auf dem Mac?

Gruß
Lucas
X

Indesign – Java-Scripting Mac

Martin Fischer
  
Beiträge gesamt: 12783

29. Okt 2006, 17:37
Beitrag # 2 von 18
Beitrag ID: #259202
Bewertung:
(4563 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Lucas,

1. Es gibt kein Java für InDesign, sondern JavaScript (Java ist eine Programmiersprache, die mit der Skriptsprache JavaScript nichts zu tun hat; mehr dazu: http://www.karakas-online.de/...t/javascript_1_2.htm oder http://www.sysiphus.de/...ex/t_javascript.html).

2. Die Liste der Objekte ist mit Dokumentation der Eigenschaften und Methoden in der Scripting Reference oder als einfache Übersicht in der Script Directory PDF-Datei von Peter Kahrel zu finden: http://www.kahrel.plus.com/indesignscripts.html.

3. Die Liste der Objekte kann man sich auch im Datenbrowser von ExtenScript Toolkit anzeigen lassen. Manchmal hilft es, am Ende eine Nonsense-Zeile einzufügen (z.B.: "x = 0") und dort einen Haltepunkt zu setzen. Dann kann man die Eigenschaften der Objekte im Datenbrowser wunderbar studieren.

4. Darüberhinaus kann man jeden anderen Texteditor für die JavaScript-Entwicklung verwenden (BBEdit, TextMate ...). Allerdings bekommt an über diese Editoren keinen direkten Einblick in die Objekte und ihre Eigenschaften.

Ergo: das ExtendScript Toolkit ist die erste Wahl eines JS-Editors für InDesign.

Für Windows-Benutzer gibt es noch den Objektbrowser von Teus de Jong: http://www.teusdejong.nl/


als Antwort auf: [#259194]

Indesign – Java-Scripting Mac

turtle
Beiträge gesamt: 180

29. Okt 2006, 20:42
Beitrag # 3 von 18
Beitrag ID: #259220
Bewertung:
(4530 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi, danke für die schnelle Antwort, aber eine Frage habe ich noch:

ich habe in einem Beispielscript etwas von der Funktion app.search(...) gelesen, aber im Datenbrowser bekomme ich unter app keine Funktion search angezeigt (wahrscheinlich weil es eine Funktion ist, die von InDesign bereitgestellt wird).

Wie kann ich solche programminternen Funktionen oder Objekte auch in den Datenbrowser laden bzw. ist das überhaupt möglich?

Vielen Dank schon mal im Vorraus,
Lucas


als Antwort auf: [#259202]
(Dieser Beitrag wurde von turtle am 29. Okt 2006, 20:45 geändert)

Indesign – Java-Scripting Mac

Martin Fischer
  
Beiträge gesamt: 12783

29. Okt 2006, 21:20
Beitrag # 4 von 18
Beitrag ID: #259227
Bewertung:
(4509 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Lucas,

Zitat ich habe in einem Beispielscript etwas von der Funktion app.search(...) gelesen, aber im Datenbrowser bekomme ich unter app keine Funktion search angezeigt (wahrscheinlich weil es eine Funktion ist, die von InDesign bereitgestellt wird).


Der Datenbrowser zeigt nur die Eigenschaften der Objekte an, nicht ihre Methoden.
Die Methoden (z.B. app.search()) sind das, was die Objekten tun können, außer Eigenschaften zu haben.
Diese findest Du in der Scripting Reference. Im DatenBrowser bekommst Du sie nicht zu Gesicht.

Wenn ich skripte, dann liegt stets die "CS2 JavaScript Reference.pdf" im Hintergrund: Ich habe mir den JS-Teil aus der Scripting Reference.pdf separat rausgezogen und abgespeichert, um bei der Volltextsuche in Acrobat nur JS-relevante Stellen angezeigt zu bekommen.

Warum zögerst Du, auf die Scripting Reference zurückzugreifen?
Sie dürfte die zuverlässigste und umfangreichste Dokumentation der Objekte, ihrer Eigenschaften und ihrer Methoden sein.


als Antwort auf: [#259220]

Indesign – Java-Scripting Mac

turtle
Beiträge gesamt: 180

1. Nov 2006, 17:33
Beitrag # 5 von 18
Beitrag ID: #259667
Bewertung:
(4451 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

also die Scripting Reference ist schon ganz nützlich, aber so ganz zufrieden bin ich damit trotzdem nicht.

Gibt es denn keine Möglichkeit z.B. die Objekte und Eigenschaften eines Dokuments (Höhe, Breite etc.) hierarchisch dargestellt zu bekommen?

Momentan z.B. will ich nämlich die Eigenschaften von Textrahmen verändern und habe überhaupt keine Ahnung wie ich diese aufrufen muss.

Könntest Du mir vielleicht exemplarisch erklären wie Du mithilfe der Scripting Reference an so ein Problem herangehen würdest (wenn Du noch keine Ahnung von den einzelnen Objekten hättest so wie ich)?

mfg,
Lucas


als Antwort auf: [#259227]
(Dieser Beitrag wurde von turtle am 1. Nov 2006, 17:38 geändert)

Indesign – Java-Scripting Mac

Martin Fischer
  
Beiträge gesamt: 12783

1. Nov 2006, 17:57
Beitrag # 6 von 18
Beitrag ID: #259673
Bewertung:
(4442 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Lucas,

> Könntest Du mir vielleicht exemplarisch erklären wie Du mithilfe der Scripting Reference
> an so ein Problem herangehen würdest

1. Ich würde mir überlegen, wie das Objekt auf englisch heißen könnte. Zur Not würde ich das gewünschte Objekt in InDesign auswählen und das folgende Skript in das ExtendScript Toolkit kopieren:
Code
var mySel = app.selection[0]; 
var x=1

Setze bei "var x = 1" einen Haltepunkt (damit das Skript hier stoppt).
Starte das Skript in ESTK und schau im Datenbrowser unter "mySel" nach, welche Eigenschaften das gewählte Objekt hat. Bei "mySel" steht im Datenbrowser zunächst "[object TextFrame]" - aha, das ist die Bezeichnung des Objekts (unter dieser Bezeichnung findest Du weitere Informationen in der Scripting Reference).
Ferner kannst Dir hier nach dem Aufklappen von "mySel" die Bezeichnungen der Eigenschaften ablesen. Manchmal kommt man über einen Wert der gesuchten Eigenschaft näher.

In einem zweiten Schritt könntest Du in Dein Skript z.B. folgende Zeile einbauen:
mySel.width = 10; (mySel referenziert immer noch das gewählte Objekt, also z.B. ein Textrahmen).

2. schau in der Scripting Reference unter "TextFrame" nach. Dort stehen alle Eigenschaften und Methoden.


als Antwort auf: [#259667]

Indesign – Java-Scripting Mac

turtle
Beiträge gesamt: 180

1. Nov 2006, 20:19
Beitrag # 7 von 18
Beitrag ID: #259687
Bewertung:
(4425 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Also wenn ich das so mache erscheint in der Javascript-Konsole nur "undefined ist kein Objekt" und im Datenbrowser "mySel = undefined" !?


als Antwort auf: [#259673]

Indesign – Java-Scripting Mac

turtle
Beiträge gesamt: 180

1. Nov 2006, 20:45
Beitrag # 8 von 18
Beitrag ID: #259691
Bewertung:
(4419 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Oh, mein Fehler!
Ich hab gerade gemerkt, dass ich im ESTK links oben InDesign nicht ausgewählt hatte!
Vielen Dank für die Info, das ist genau was ich gebraucht habe!
Lucas


als Antwort auf: [#259687]

Indesign – Java-Scripting Mac

Martin Fischer
  
Beiträge gesamt: 12783

1. Nov 2006, 20:57
Beitrag # 9 von 18
Beitrag ID: #259695
Bewertung:
(4413 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Ich hab gerade gemerkt, dass ich im ESTK links oben InDesign nicht ausgewählt hatte!

Um sicher zu sein, daß Dein Code an InDesign adressiert wird, kannst Du das Ziel auch in die erste Zeile reinschreiben:


Code
#target InDesign 


Dann entfällt das Geklicke links oben (besonders nervig, wenn InDesign im PullDown-Menü unten versteckt ist und über Scrollen angepeilt werden muß).


als Antwort auf: [#259691]

Indesign – Java-Scripting Mac

turtle
Beiträge gesamt: 180

1. Nov 2006, 21:24
Beitrag # 10 von 18
Beitrag ID: #259698
Bewertung:
(4411 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Also wenn ich z.B. die Bezeichnung eines ausgewählten Textrahmens ändern will, kann ich das jetzt so schreiben:

Code
var mySel = app.selection[0]; 
mySel.label = "AndererName";


Was ist aber wenn ich einen bestimmten Textrahmen direkt vom Script aus umbenennen möchte?
(aus dem Datenbrowser weis ich, dass die Hierarchie folgendermaßen aussieht:
Application >> Document >> Spread >> Page >> TextFrame
das hilft mir aber nicht wirklich weiter!?)

Vielen Dank schon mal im Vorraus,
Lucas


als Antwort auf: [#259691]

Indesign – Java-Scripting Mac

Martin Fischer
  
Beiträge gesamt: 12783

1. Nov 2006, 21:34
Beitrag # 11 von 18
Beitrag ID: #259700
Bewertung:
(4407 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
z.B. app.documents[0].pages[0].textFrames[0].label = "AndererName";

Damit weist Du dem ersten Textrahmen auf der ersten Seite des obersten Dokuments das Etikett "AndererName" zu.

Statt app.documents[0] kannst Du auch app.activeDocument verwenden.

Mit "alert(app.documents[0].pages[0].textFrames.length)" wird Dir die Menge der Textrahmen auf der ersten Seite angezeigt. Ggf. mußt Du zur Identifikation des einen gewünschten Textrahmens eine Schleife durch alle Textrahmen der ersten Seite vornehmen.


als Antwort auf: [#259698]

Indesign – Java-Scripting Mac

turtle
Beiträge gesamt: 180

1. Nov 2006, 22:18
Beitrag # 12 von 18
Beitrag ID: #259702
Bewertung:
(4401 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich glaub jetzt weiß ich genug um das ganze erst mal alleine weitererforschen zu können :)
Vielen Dank für die ganze Hilfe!
Lucas


als Antwort auf: [#259700]

Indesign – Java-Scripting Mac

turtle
Beiträge gesamt: 180

2. Nov 2006, 22:02
Beitrag # 13 von 18
Beitrag ID: #259872
Bewertung:
(4340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich versuche gerade mithilfe eines Scripts den Index des Paragraphen herauszufinden, der mit einem bestimmten Wort beginnt. Das ganze hab ich mir in etwa so gedacht:

Code
with (app.documents[0].stories[0]){ 
for (j=0; (paragraphs[j].words[0].contents)<>"Wort"; j++) {}
}
var ind = j;


In diesem Fall bekomme ich aber die Fehlermeldung, dass ich in der Schleife eine Variale verwenden soll.
Wie kann man dieses Problem umgehen?

Lucas


als Antwort auf: [#259702]
(Dieser Beitrag wurde von turtle am 2. Nov 2006, 22:04 geändert)

Indesign – Java-Scripting Mac

Martin Fischer
  
Beiträge gesamt: 12783

3. Nov 2006, 00:10
Beitrag # 14 von 18
Beitrag ID: #259886
Bewertung:
(4323 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
1. Nimm "!=" an Stelle von "<>".
2. Überlege Dir, was passiert, wenn im ersten Textfluß kein Absatz mit "Wort" beginnt.


als Antwort auf: [#259872]

Indesign – Java-Scripting Mac

turtle
Beiträge gesamt: 180

3. Nov 2006, 13:49
Beitrag # 15 von 18
Beitrag ID: #259994
Bewertung:
(4283 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke, jetzt funktionierts, aber ich hab schon wieder ein neues Problem:

Ich will den "geometricBounds" eines Textrahmens per Script neue Werte zuweisen, aber es passiert einfach gar nichts (auch keine Fehlermeldung o.ä.).
Muss man erst irgend eine Einstellung ändern, bevor man die Koordinaten manipulieren kann?

Lucas


als Antwort auf: [#259886]
(Dieser Beitrag wurde von turtle am 3. Nov 2006, 13:52 geändert)
X