[GastForen Programme Print/Bildbearbeitung Adobe InDesign Fußnotenskript

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

Fußnotenskript

Peter Sauseng
Beiträge gesamt: 483

26. Jan 2006, 12:55
Beitrag # 1 von 9
Bewertung:
(3586 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen!

Kann mir jemand sagen, was ich bei folgendem Skript falsch mache?

Code
// footnoteNumber.js  
var myDoc = app.documents[0];
var myFootnotes = myDoc.stories.everyItem().footnotes;

if (app.documents.length != 0){
if (myFootnotes.length > 0){
with (myDoc){
// Erstes Wort in jedem Fußnotenelement wird mit dem Zeichenformat "Fußnotenzeichen" formatiert
myFootnotes.everyItem().words[0].appliedCharacterStyle=characterStyles.item("Fußnotenzeichen");
// Vor jedem Fußnotenzeichen wird ein Tabstoppzeichen eingefügt
myFootnotes.everyItem().insertionPoints[0].contents = '\u0009';
}
// 3 Tabs werden durch 1 Tab ersetzt
app.findPreferences = null; app.changePreferences = null;
myDoc.search("^t^t^t", false, false, "^t");
}
else{
alert ("Kein Fußnoten im Dokument vorhanden.");
}
}
else{
alert ("Kein Dokument geöffnet.");
}


Wenn die drei Tabstoppzeichen durch eines ersetzt werden, zeigt InDesign (4.0.2) einen JavaScript Fehler an:
Fehlernummer 45
Fehlerzeichenfolge: Object is invalid
Quelle: Return value.

Die Ersetzung und auch die Zuweisungen vorher funktionieren aber.
X

Fußnotenskript

Martin Fischer
  
Beiträge gesamt: 12732

26. Jan 2006, 14:00
Beitrag # 2 von 9
Beitrag ID: #207246
Bewertung:
(3573 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo redbull,

ich kann keinen Fehler erkennen und bei mir läuft das Skript - im ExtendScript Toolkit(!) - problemlos. Jetzt erst, beim Verfassen der Nachricht stelle ich fest, daß der Fehler dann erscheint, wenn das Skript von der Skriptpalette gestartet wird.

Und ich erinnere mich, daß ich das Problem früher schon hatte, mich aber nicht darum scherte.
Jetzt wollte ich es aber doch wissen.

> myDoc.search("^t^t^t", false, false, "^t");
Das ist korrekt.

Und nun ein Gag.
Füge unter dieser Zeile die folgende Zeile ein (der Cursor soll an die erste Einfügestelle im ersten Textfluß springen):
Code
myDoc.stories[0].insertionPoints[0].select() 


InDesign scheint ein Problem damit zu haben, daß die letzte Änderung in einer Fußnote vorgenommen wurde. Gegenprobe: Ziehe einen neuen Textrahmen auf und mach ein paar Tabs rein. Und nun starte das Skript ohne die o.g. Zeile. -> Wenn die letzte Änderung im Text gemacht wird, dann taucht diese Fehlermeldung nicht mehr auf.

Die Fußnoten sind skripttechnisch etwas sonderbar.

Das ist ein Ding!

Kannst Du das bestätigen?


als Antwort auf: [#207219]

Fußnotenskript

Peter Sauseng
Beiträge gesamt: 483

26. Jan 2006, 14:32
Beitrag # 3 von 9
Beitrag ID: #207254
Bewertung:
(3569 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke, Martin!

Nach dem Einfügen der Zeile
Code
myDoc.stories[0].insertionPoints[0].select() 

ist das Problem weg! Super!

Die Gegenprobe mit dem Aufziehen eines neuen Rahmens und Hineinschreiben der Tabs kann ich leider nicht bestätigen...
Habe alles mögliche ausprobiert, aber diese Fehlermeldung kommt immer wieder, wenn eine Änderung gemacht wurde.

Die Fehlermeldung bleibt aber aus, wenn nur im "Haupttext" etwas mit myDoc.search ersetzt wird. Wenn ich die 3 Tabs vorher manuell entferne und in den Haupttext 3 Tabs einfüge, wird alles korrekt ausgeführt.

Liebe Grüße, Peter


als Antwort auf: [#207246]

Fußnotenskript

Martin Fischer
  
Beiträge gesamt: 12732

26. Jan 2006, 15:25
Beitrag # 4 von 9
Beitrag ID: #207277
Bewertung:
(3563 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Die Gegenprobe mit dem Aufziehen eines neuen Rahmens und Hineinschreiben der Tabs
> kann ich leider nicht bestätigen...

Vielleicht müßtest du den neuen Textrahmen ganz am Ende der Datei aufziehen (ggf. neue Seite einfügen). Es müßte - nach meiner Vermutung - so sein, daß der letzte Treffer beim Suchen-Ersetzen nicht in einer Fußnote landet, sondern im Haupttext.

Aber das ist ein Streit um Kaisers Bart.
Wenn mit dem select-Befehl der Fehler ausbleibt ist es gut.


als Antwort auf: [#207254]

Fußnotenskript

Peter Sauseng
Beiträge gesamt: 483

26. Jan 2006, 15:36
Beitrag # 5 von 9
Beitrag ID: #207284
Bewertung:
(3557 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hat auch nach Aufziehen eines neuen Textrahmens auf einer neuen Seite nicht funktioniert. Aber ist ja egal!

Eine andere Frage zum Thema JavaScript: Kann ich mit JavaScript auch so Formulare mit verschiedenen Buttons erzeugen (und jedem Button ein spezielles Skript zuweisen) wie mit Visual Basic?

Oder kann ich Scripts nur aus der Palette aufrufen?

Liebe Grüße, Peter


als Antwort auf: [#207277]

Fußnotenskript

Martin Fischer
  
Beiträge gesamt: 12732

26. Jan 2006, 15:58
Beitrag # 6 von 9
Beitrag ID: #207292
Bewertung:
(3551 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Im Prinzip könntest Du Skripts auch über einen Dialog starten.
Über DropDown-Menü oder Radio-Buttons.
JavaScript ist da etwas spartanischer.

Du müßtst dann ein doScript() dahinterlegen:
doScript(SCRIPTNAME, ScriptLanguage.javascript)

(oder ggf. eine andere Sprache: ScriptLanguage.applescript-Language, ScriptLanguage.visualBasic).

So könntest Du etwa ein Skript in VB mit einem komfortablerem Dialog machen, das Dir dann nach Klick auf die entsprechenden Buttons ein JavaScript startet.


als Antwort auf: [#207284]

Fußnotenskript

Peter Sauseng
Beiträge gesamt: 483

30. Jan 2006, 07:10
Beitrag # 7 von 9
Beitrag ID: #207831
Bewertung:
(3515 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: So könntest Du etwa ein Skript in VB mit einem komfortablerem Dialog machen, das Dir dann nach Klick auf die entsprechenden Buttons ein JavaScript startet.


Tja, manchmal hat man wirklich ein Brett vor dem Kopf! Warum kompliziert, wenn es ja SO einfach geht. Danke!


als Antwort auf: [#207292]

Fußnotenskript

Peter Sauseng
Beiträge gesamt: 483

27. Mär 2006, 10:47
Beitrag # 8 von 9
Beitrag ID: #219980
Bewertung:
(3401 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat nach Klick auf die entsprechenden Buttons ein JavaScript startet.


Hilfe! Wie mache ich so etwas?

Ich möchte beispielsweise mit Klick auf "Button 5" das Script "AdjustLayout.jsx" starten. Mein Code dazu sieht so aus:

Code
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click 

System.Diagnostics.Process.Start("C:\Programme\Adobe\CS2\Adobe InDesign CS2\Presets\Scripts\AdjustLayout.jsx")


End Sub


Damit wird aber die jsx-Datei mit dem Programm "ExtendScript Toolkit" geöffnet und nicht mit InDesign gestartet. Weiß jemand, wie ich den Button so belegen kann, dass ein InDesign-JavaScript gestartet wird?

Liebe Grüße, Peter


als Antwort auf: [#207292]

Fußnotenskript

Peter Sauseng
Beiträge gesamt: 483

28. Mär 2006, 08:53
Beitrag # 9 von 9
Beitrag ID: #220145
Bewertung:
(3354 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
So, ich habe es jetzt einmal geschafft per JavaScript ein anderes JavaScript aufzurufen.

Code
dir = app.activeScript.path+'/' 
app.doScript( File(dir + 'AdjustLayout.jsx'), ScriptLanguage.javascript)


Die Frage ist nur, wie ich das ganze nach VB übersetzen kann.


als Antwort auf: [#219980]
X