[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Pagnierung am Seitenanfang ausgeben CS5

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

Pagnierung am Seitenanfang ausgeben CS5

fiduspub
Beiträge gesamt: 8

19. Okt 2011, 09:49
Beitrag # 1 von 15
Bewertung:
(5531 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Forum,

ich bin gestern bei meiner Suche auf das Skript "SeitenzahlEinfuegen_401d.js" gestoßen. Es ist genau das, was ich suchte. In CS3 funktioniert es auch hervorragend. In CS5 werden allerdings nur die Rahmen erstellt, die Seitenzahl wird nicht hinein kopiert. Könnte mir bitte jemand helfen, das Skript für CS5 anzupassen?

Hier das Skript, wie ich es verwendet habe:
Code
/ die Auswahl speichern ...  
var curSel = app.selection;
// ... und prüfen
if (curSel.length == 0) {
alert ("Es ist nichts ausgewählt.", "Achtung");
exit();
}

// der Variablen 'mainStory' den Textfluss zuweisen
if (curSel[0].constructor.name == "TextFrame") {
mainStory = curSel[0].parentStory;
}
else if (curSel[0].constructor.name == "InsertionPoint") {
mainStory = curSel[0].parent;
}
else {
alert ("Einen Rahmen des Textflusses auswählen.", "Stop");
exit();
}

// die Textrahmen, durch welche der Text fliesst
var allFrames = mainStory.textContainers;
// die Anzahl der Textrahmen speichern
var nFrames = allFrames.length;

// eine Schleife durch die Textrahmen
for (var f=0; f<nFrames; f++) {
// die Seite speichern, auf welcher sich der aktuelle Rahmen befindet
var pageName = allFrames[f].parent.name;
// der erste Einfügepunkt des Rahmens
var insPoint = allFrames[f].texts[0].insertionPoints[0];
// einen Textrahmen einfügen
var newFrame = insPoint.textFrames.add();
// die Grösse des Rahmens
newFrame.geometricBounds = [0, 0, 4, 8];
// die Seitenzahl einfügen
newFrame.parentStory.contents = pageName;
// den verankerten Rahmen aus dem Textrahmen herausholen
with (newFrame.anchoredObjectSettings) {
anchoredPosition = AnchorPosition.ANCHORED;
anchorPoint = AnchorPoint.BOTTOM_RIGHT_ANCHOR;
horizontalReferencePoint = AnchoredRelativeTo.TEXT_FRAME;
anchorXoffset = "3 mm";
}
}


Ich sollte vielleicht noch dazu sagen, dass ich von Skripten nur so viel verstehe, dass ich sie speichern und anwenden kann. Es ist auch mein erster Beitrag den ich schreibe obwohl ich mich schon eine ganze Weile mir das Forum zu nutzen mache, und auch schon viele wertvolle Lösungen hier gefunden habe. Danke dafür an alle!

Grüße
Carola
X

Pagnierung am Seitenanfang ausgeben CS5

Hans Haesler
  
Beiträge gesamt: 5826

19. Okt 2011, 10:26
Beitrag # 2 von 15
Beitrag ID: #482614
Bewertung:
(5516 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Carola,

herzlich willkommen auf HDS! :-)

Dieses Script kommt mir irgendwie bekannt vor ... Aber ich muss gleich weg und werde mich erst später um die Anpassung an CS5 kümmern können.

Gruss, Hans


als Antwort auf: [#482610]

Pagnierung am Seitenanfang ausgeben CS5

Uwe Laubender
Beiträge gesamt: 5314

19. Okt 2011, 13:52
Beitrag # 3 von 15
Beitrag ID: #482644
Bewertung:
(5475 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Carola!
Ohne jetzt dem lieben Hans in den Rücken fallen zu wollen, auf die Schnelle die Anpassung an InDesign CS5 (oder CS5.5):

Ändere folgende Zeile:
Code
var pageName = allFrames[f].parent.name; 

in:
Code
var pageName = allFrames[f].parentPage.name; 


//EDIT: Die Forensoftware hatte wieder zugeschlagen und den b-Anfangs-Tag für Fettstellung mit in den Code geschrieben. Jetzt ist der Code hoffentlich fehlerfrei.
//EDIT 2: Ja, so stimmen die Zeilen…


als Antwort auf: [#482610]
(Dieser Beitrag wurde von Uwe Laubender am 19. Okt 2011, 13:56 geändert)

Pagnierung am Seitenanfang ausgeben CS5

fiduspub
Beiträge gesamt: 8

19. Okt 2011, 14:08
Beitrag # 4 von 15
Beitrag ID: #482648
Bewertung:
(5459 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

super, es funktioniert. Vielen Dank für die rasche Hilfe. Wäre es noch möglich dem Rahmen einen Objektstil zu geben, z.B. "pagina"?

Viele Grüße
Carola


als Antwort auf: [#482644]

Pagnierung am Seitenanfang ausgeben CS5

Hans Haesler
  
Beiträge gesamt: 5826

19. Okt 2011, 14:20
Beitrag # 5 von 15
Beitrag ID: #482654
Bewertung:
(5445 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Carola,

der liebe Uwe hat Dir die kleine Änderung, welche für CS5 notwendig ist schon durchgegeben. Das hatte ich beim ersten Durchlesen auch gedacht, hatte aber keine Zeit mehr zu testen, ob diese Änderung genügt.

Nachstehend nun der gesamte Code. Drei zusätzliche Änderungen:
1. Dank 'hasOwnProperty("baseline")' (anstelle von 'constructor.name == "InsertionPoint")') sind ausser dem Curser noch alle anderen Textauswahlmöglichkeiten erfasst.
2. Dein Wunsch zum Zuweisen eines Objektformats ist umgesetzt.
3. Am Schluss wird das Ende der Aktion verkündet.

Code
//SeitenzahlEinfuegen_501d.js 

// die Auswahl speichern ...
var curSel = app.selection;
// ... und prüfen
if (curSel.length == 0) {
alert ("Es ist nichts ausgewählt.", "Achtung");
exit();
}

// der Variablen 'mainStory' den Textfluss zuweisen
if (curSel[0].constructor.name == "TextFrame") {
mainStory = curSel[0].parentStory;
}
else if (curSel[0].hasOwnProperty("baseline")) {
mainStory = curSel[0].parent;
}
else {
alert ("Einen Rahmen des Textflusses auswählen.", "Stop");
exit();
}

// die Textrahmen, durch welche der Text fliesst
var allFrames = mainStory.textContainers;
// die Anzahl der Textrahmen speichern
var nFrames = allFrames.length;

// eine Schleife durch die Textrahmen
for (var f=0; f<nFrames; f++) {
// die Seite speichern, auf welcher sich der aktuelle Rahmen befindet
var pageName = allFrames[f].parentPage.name;
// der zweitletzte Einfügepunkt der letzen Zeile des Rahmens
var insPoint = allFrames[f].texts[0].lines.item(-1).insertionPoints.item(-2);
// einen Textrahmen einfügen
var newFrame = insPoint.textFrames.add();
// die Grösse des Rahmens
newFrame.geometricBounds = [0, 0, 4, 8];
// die Seitenzahl einfügen
newFrame.parentStory.contents = pageName;
// ein Objetktformat zuweisen
newFrame.appliedObjectStyle = app.documents[0].objectStyles.itemByName("pagina");
// den verankerten Rahmen aus dem Textrahmen herausholen
with (newFrame.anchoredObjectSettings) {
anchoredPosition = AnchorPosition.ANCHORED;
anchorPoint = AnchorPoint.BOTTOM_RIGHT_ANCHOR;
horizontalReferencePoint = AnchoredRelativeTo.TEXT_FRAME;
anchorXoffset = "3 mm";
}
}

// das Ende der Aktion verkünden
var dlog = new Window("palette");
dlog.size = [320,100];
dlog.add("statictext", [80, 100, 320, 116], "Fertig.");
dlog.show();
// eine kleine Pause
$.sleep(999);
// das Fenster schliessen
dlog.close();

Gruss, Hans


als Antwort auf: [#482648]

Pagnierung am Seitenanfang ausgeben CS5

fiduspub
Beiträge gesamt: 8

19. Okt 2011, 15:06
Beitrag # 6 von 15
Beitrag ID: #482667
Bewertung:
(5419 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

danke schön, das ist prima und genau das was ich brauche. Folgende Zeile habe ich noch geändert, um die Rahmen am Seitenanfang zu haben (habe ich mir von hier abgeschaut: "http://www.hilfdirselbst.ch/foren/_P454757.html".

von
Code
	// der zweitletzte Einfügepunkt der letzen Zeile des Rahmens  
var insPoint = allFrames[f].texts[0].lines.item(-1).insertionPoints.item(-2);


in
Code
	// der erste Einfügepunkt des Rahmens   
var insPoint = allFrames[f].texts[0].insertionPoints[0];


hier noch mal komplett:
Code
//SeitenzahlEinfuegen_501d.js  

// die Auswahl speichern ...
var curSel = app.selection;
// ... und prüfen
if (curSel.length == 0) {
alert ("Es ist nichts ausgewählt.", "Achtung");
exit();
}

// der Variablen 'mainStory' den Textfluss zuweisen
if (curSel[0].constructor.name == "TextFrame") {
mainStory = curSel[0].parentStory;
}
else if (curSel[0].hasOwnProperty("baseline")) {
mainStory = curSel[0].parent;
}
else {
alert ("Einen Rahmen des Textflusses auswählen.", "Stop");
exit();
}

// die Textrahmen, durch welche der Text fliesst
var allFrames = mainStory.textContainers;
// die Anzahl der Textrahmen speichern
var nFrames = allFrames.length;

// eine Schleife durch die Textrahmen
for (var f=0; f<nFrames; f++) {
// die Seite speichern, auf welcher sich der aktuelle Rahmen befindet
var pageName = allFrames[f].parentPage.name;
// der zweitletzte Einfügepunkt der letzen Zeile des Rahmens
var insPoint = allFrames[f].texts[0].lines.item(-1).insertionPoints.item(-2);
// einen Textrahmen einfügen
var newFrame = insPoint.textFrames.add();
// die Grösse des Rahmens
newFrame.geometricBounds = [0, 0, 4, 8];
// die Seitenzahl einfügen
newFrame.parentStory.contents = pageName;
// ein Objetktformat zuweisen
newFrame.appliedObjectStyle = app.documents[0].objectStyles.itemByName("pagina");
// den verankerten Rahmen aus dem Textrahmen herausholen
with (newFrame.anchoredObjectSettings) {
anchoredPosition = AnchorPosition.ANCHORED;
anchorPoint = AnchorPoint.BOTTOM_RIGHT_ANCHOR;
horizontalReferencePoint = AnchoredRelativeTo.TEXT_FRAME;
anchorXoffset = "3 mm";
}
}

// das Ende der Aktion verkünden
var dlog = new Window("palette");
dlog.size = [320,100];
dlog.add("statictext", [80, 100, 320, 116], "Fertig.");
dlog.show();
// eine kleine Pause
$.sleep(999);
// das Fenster schliessen
dlog.close();


Danke noch mal und viele Grüße
Carola


als Antwort auf: [#482654]

Pagnierung am Seitenanfang ausgeben CS5

Uwe Laubender
Beiträge gesamt: 5314

19. Okt 2011, 15:07
Beitrag # 7 von 15
Beitrag ID: #482668
Bewertung:
(5419 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Hans!
Noch ein kleiner Verbesserungsvorschlag, der das Script unabhängig von der InDesign-Version macht:

Code
//Als contents der neuen Textrahmen die "AutoPageNumber" benutzen: 
var pageName = "\u0018";



als Antwort auf: [#482654]

Pagnierung am Seitenanfang ausgeben CS5

Hans Haesler
  
Beiträge gesamt: 5826

19. Okt 2011, 15:23
Beitrag # 8 von 15
Beitrag ID: #482670
Bewertung:
(5405 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hallo Uwe,

sehr gute Idee! :-)

@ Carola: In diesem Fall kann auf die Variable pageNumber verzichtet werden.

Also: Die Zeilen 38 und 39 so ändern:

Code
// im aktuellen neuen Rahmen die "AutoPageNumber" einsetzen 
newFrame.parentStory.contents = "\u0018";

Und die Zeilen 30 und 31 ...

Code
// die Seite speichern, auf welcher sich der aktuelle Rahmen befindet 
var pageName = allFrames[f].parentPage.name;

... komplett löschen.

Gruss, Hans


als Antwort auf: [#482668]

Pagnierung am Seitenanfang ausgeben CS5

Hans Haesler
  
Beiträge gesamt: 5826

19. Okt 2011, 15:43
Beitrag # 9 von 15
Beitrag ID: #482673
Bewertung:
(5388 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

allerdings ... die Idee ist nur sehr gut, wenn automatische Seitennummern willkommen sind.
Aber das wird uns Carola schon berichten.

Gruss, Hans


als Antwort auf: [#482670]

Pagnierung am Seitenanfang ausgeben CS5

TineF
Beiträge gesamt: 4

21. Aug 2012, 18:01
Beitrag # 10 von 15
Beitrag ID: #499705
Bewertung:
(4889 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

das Script war auch mir sehr nützlich beim Einfügen von Seitenzahlen. Ganz toll! Bei der Ausführung in CS6 erhielt ich jedoch eine Fehlermeldung. In folgender Zeile sei das Objekt ungültig:

var insPoint = allFrames[f].texts[0].insertionPoints[0];

Funktionieren tut es aber eigentlich trotzdem. Womit könnte die Fehlermeldung zusammenhängen?


als Antwort auf: [#482667]

Pagnierung am Seitenanfang ausgeben CS5

Hans Haesler
  
Beiträge gesamt: 5826

21. Aug 2012, 19:48
Beitrag # 11 von 15
Beitrag ID: #499708
Bewertung:
(4855 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo TineF,

herzlich willkommen in der Skriptwerkstatt auf HDS! :-)

Also ... ich habe jetzt das erste Script (gepostet am 19. Oktober 2011 um 14.20 Uhr) sowie die Variante von Carola von 15.06 Uhr (in welcher ich die Zeile 33 gemäss ihrer Ankündigung änderte) mit CS6 ausgeführt.
Ergebnis: Wie erwartet. Keine Fehlermeldung.

Fragen:
– Hat das Script mit CS5 ohne Fehlermedung funktioniert?
– In welcher Zeile hast Du das Speichern des Einfügepunktes geändert?
– Ist das CS6-Dokument exakt gleich aufgebaut wie jenes von CS5?

Ich vermute, dass sich am Ende der Kette ein leerer Rahmen befindet ...

Gruss, Hans


als Antwort auf: [#499705]

Pagnierung am Seitenanfang ausgeben CS5

Uwe Laubender
Beiträge gesamt: 5314

22. Aug 2012, 03:12
Beitrag # 12 von 15
Beitrag ID: #499716
Bewertung:
(4803 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Hans Haesler ] Ich vermute, dass sich am Ende der Kette ein leerer Rahmen befindet ...

Hallo, Hans!
Das vermute ich auch.

Denn bei einem leeren Textrahmen am Ende einer Textrahmenkette ist texts[0].insertionPoints[0] einfach nicht vorhanden.
Nach einem kleinen Test mit einem solchen Objekt, kann ich nur feststellen, dass es einen try{}catch(e){}-Wickel braucht, um das abzufangen…

Ok. Was aber dann? In der Kette der Textrahmen soweit zurückgehen, bis Inhalt gefunden wird oder der erste Textrahmen erreicht ist und dann je nach Anzahl der leeren Textrahmen in der Kette eine passende Anzahl von (Text-)Rahmenumbruchzeichen einfügen, bevor die Seitenzahl eingesetzt wird?

Ja, ich denke, das sollte gehen. Testen werde ich's aber heute Nacht nicht mehr ;-)


als Antwort auf: [#499708]

Pagnierung am Seitenanfang ausgeben CS5

Hans Haesler
  
Beiträge gesamt: 5826

22. Aug 2012, 07:18
Beitrag # 13 von 15
Beitrag ID: #499718
Bewertung:
(4777 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

danke für Deine Beteiligung.

Aber: Macht es Sinn, die Seitenzahl einzufügen, wenn daneben kein Text ist?
Vielleicht überrascht uns TineF mit einem triftigen Grund.

Gruss, Hans


als Antwort auf: [#499716]

Pagnierung am Seitenanfang ausgeben CS5

TineF
Beiträge gesamt: 4

23. Aug 2012, 09:38
Beitrag # 14 von 15
Beitrag ID: #499764
Bewertung:
(4708 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen herzlichen Dank für die schnelle Antwort. :) Nachdem ich den leeren Rahmen am Ende gelöscht hatte, kam keine Fehlermeldung mehr. Ich war mir als blutiger Anfänger unsicher, inwiefern eine neue Indesign Version möglicherweise Einfluss auf die Skripte hat.

Seitenangaben für leere Seiten brauche ich nicht. Ich versuche mir ein wenig zu helfen bei der Erstellung der PageList einer ePub-Datei. Schade, dass das nicht automatisiert aus InDesign funktioniert.


als Antwort auf: [#499708]

Pagnierung am Seitenanfang ausgeben CS5

Hans Haesler
  
Beiträge gesamt: 5826

23. Aug 2012, 10:10
Beitrag # 15 von 15
Beitrag ID: #499768
Bewertung:
(4688 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo TineF,

bitteschön. Deine Unsicherheit ist verständlich.
Aber zum Glück funktionieren viele Scripts unverändert in verschiedenen Versionen.

Gruss, Hans


als Antwort auf: [#499764]
X