[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Variable Dokumentseite zuweisen

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

Variable Dokumentseite zuweisen

Oliver Till
Beiträge gesamt:

11. Mai 2011, 10:40
Beitrag # 1 von 7
Bewertung:
(1995 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, ich bin neu hier und versuche mich gerade mit einer Script-Programmierung für InDesign CS5.
Ausgangspunkt: Ich habe ein 5-seitiges InDesign Dokument, welches auf jeder Seite eine Tabelle enthält. Diese Tabelle wird mittels Summenfunktion in einer Spalte addiert, das Ergebnis soll in einem separaten Textrahmen angezeigt werden.

Dies funktioniert soweit, bis auf die Tatsache, dass der Textrahmen der Seite 2 auf Seite 1 angezeigt wird, ebenso auf den Folgeseiten.

Meine Code beinhaltet auch den Index "0", der die erste Seite benennt.
Wie kann ich dieser bestimmten Seite die aktuelle Seite zuweisen, so dass der Textrahmen immer auf der aktuellen Seite erscheint?

Mein Programmier-Code:
var tf = app.activeDocument.pages.item(0).textFrames.add({geometricBounds: [50, 98, 46, 89], name:'Zeit'});
X

Variable Dokumentseite zuweisen

Martin Fischer
  
Beiträge gesamt: 12691

11. Mai 2011, 11:15
Beitrag # 2 von 7
Beitrag ID: #471164
Bewertung:
(1986 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Oliver,

die zweite Seite hat den Index 1.
Code
var tf = app.activeDocument.pages.item(1).textFrames.add({geometricBounds: [50, 98, 46, 89], name:'Zeit'}); 


Entweder baust Du das in eine Schleife durch die Seiten ein oder Du ermittelst jeweils den Index der aktuellen Seite und übernimmst diesen in app.activeDocument.pages.item(x).


als Antwort auf: [#471155]

Variable Dokumentseite zuweisen

Oliver Till
Beiträge gesamt:

11. Mai 2011, 11:22
Beitrag # 3 von 7
Beitrag ID: #471166
Bewertung:
(1981 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin Fischer,
welchen Index die jeweilige Seite hat, habe ich schon herausgefunden.
Den Index "x" habe ich auch schon probiert, aber dieser funktionierte nicht ohne Definition für das "x".

Wie ermittel ich den Index der aktuellen Seite und wo muss ich diese Definition einbauen?

Gerne schicke ich auch noch mal das gesamte Script, jedoch konnte ich es bei der Themeneröffnung nicht mit hoch laden.

Ich möchte, dass das Ergebnis bzw. der neue Textrahmen auf der Seite erscheint, auf der sich meine jeweilige Tabelle befindet.
Wenn das klappt, bin ich gänzlich zufrieden.

Gruß
Oliver


als Antwort auf: [#471164]

Variable Dokumentseite zuweisen

Martin Fischer
  
Beiträge gesamt: 12691

11. Mai 2011, 11:32
Beitrag # 4 von 7
Beitrag ID: #471172
Bewertung:
(1973 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Wie ermittel ich den Index der aktuellen Seite und wo muss ich diese Definition einbauen?


Am einfachsten über den documentOffset einer page. Dieser beginnt bei der ersten Seite mit 0. Die zweite Seite hat dann den documentOffset von 2.

Es ist auch möglich, die Seite über Ihren Namen (name; itemByName('[Name der Seite]')) anzusprechen.


als Antwort auf: [#471166]

Variable Dokumentseite zuweisen

Oliver Till
Beiträge gesamt:

11. Mai 2011, 12:09
Beitrag # 5 von 7
Beitrag ID: #471177
Bewertung:
(1964 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin Fischer,

danke für die Tipps, aber aufgrund meines nicht so großen Script-Wissens, bekomme ich mein Script nicht so umgebaut, wie gewünscht.

Hier mein Script, wie es bisher komplett ausschaut:

/ simpleTableCalculation.jsx

if (app.selection[0].parent.constructor.name == "Cell"){
var myTable = app.selection[0].parent.parent;
var myLastCol = myTable.columns.length-1;
var myLastRow = myTable.rows.length-1;
var tf = app.activeDocument.pages.item(0).textFrames.add({geometricBounds: [50, 98, 46, 89], name:'Zeit'});
var mySum = 0;
for (k = 0; k < myLastRow; k++) {
mySum += (myTable.columns[myLastCol].cells[k].contents.replace(",", "."))*1
}
app.activeDocument.textFrames.itemByName('Zeit').contents = digitFormatter(mySum);
}

function digitFormatter(x) {
// Quelle: http://www.dcljs.de/faq/antwort.php?Antwort=rechnen_runden#6
var k = (Math.round(x * 100) / 100).toString();
k += (k.indexOf('.') == -1)? '.00' : '00';
var p = k.indexOf('.');
return k.substring(0, p) + ',' + k.substring(p+1, p+2);
}


als Antwort auf: [#471172]

Variable Dokumentseite zuweisen

Martin Fischer
  
Beiträge gesamt: 12691

11. Mai 2011, 12:39
Beitrag # 6 von 7
Beitrag ID: #471180
Bewertung:
(1958 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Oliver,

mir fehlt gerade die Zeit, mich intensiver mit diesem Skript zu beschäftigen.

Deswegen möchte ich Dich auf eine ähnliche Diskussion in Indesign, Tabellen und Zahlen und die dortige Empfehlung von Yves bzgl. »DTPTools Active Tables« verweisen.

Gerade wenn Du beim Skripten noch am Anfang stehst und dringend eine Lösung für die Berechnung von Tabellen benötigst, ohne viel Zeit ins Lernen von Scripten zu investieren, sei Dir dieses Plugin wärmstens empfohlen.


als Antwort auf: [#471177]

Variable Dokumentseite zuweisen

Oliver Till
Beiträge gesamt:

11. Mai 2011, 13:00
Beitrag # 7 von 7
Beitrag ID: #471183
Bewertung:
(1952 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin Fischer,

so dringend ist die Lösung nicht. Werde mir Deinen Tipp anschauen und vielleicht finde ich dort eine Anregung und Umsetzung.

Danke & Gruß
Oliver


als Antwort auf: [#471180]
X