[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:
(5246 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: 5818

19. Okt 2011, 10:26
Beitrag # 2 von 15
Beitrag ID: #482614
Bewertung:
(5231 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: 5257

19. Okt 2011, 13:52
Beitrag # 3 von 15
Beitrag ID: #482644
Bewertung:
(5190 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:
(5174 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: 5818

19. Okt 2011, 14:20
Beitrag # 5 von 15
Beitrag ID: #482654
Bewertung:
(5160 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:
(5134 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: 5257

19. Okt 2011, 15:07
Beitrag # 7 von 15
Beitrag ID: #482668
Bewertung:
(5134 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: 5818

19. Okt 2011, 15:23
Beitrag # 8 von 15
Beitrag ID: #482670
Bewertung:
(5120 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: 5818

19. Okt 2011, 15:43
Beitrag # 9 von 15
Beitrag ID: #482673
Bewertung:
(5103 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:
(4604 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: 5818

21. Aug 2012, 19:48
Beitrag # 11 von 15
Beitrag ID: #499708
Bewertung:
(4570 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: 5257

22. Aug 2012, 03:12
Beitrag # 12 von 15
Beitrag ID: #499716
Bewertung:
(4518 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: 5818

22. Aug 2012, 07:18
Beitrag # 13 von 15
Beitrag ID: #499718
Bewertung:
(4492 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:
(4423 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: 5818

23. Aug 2012, 10:10
Beitrag # 15 von 15
Beitrag ID: #499768
Bewertung:
(4403 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

Aktuell

InDesign / Illustrator
ScreenShot 274 Warum Templates in InDesign benutzen_ - Satzkiste in Stuttgart - Satz und technische Umsetzung - Google Chrome (300x300 HilfDirSelbst)

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
09.05.2023

Digicomp (Bern, Basel, Zürich)
Dienstag, 09. Mai 2023, 08.30 - 17.00 Uhr

Kurs

Sie verfügen über ein Abonnement der Creative Cloud, welches Adobe Acrobat DC Pro beinhaltet. Sind Sie unsicher, ob Ihre PDF Dateien für die jeweilige Druckausgabe geeignet sind? Lernen Sie in diesem Kurs das notwendige Rüstzeug für den sicheren Datenaustausch mit Druckdienstleistern. Erstellen Sie druckfähige PDF/X und prüfen Sie Ihre PDFs vor einer Weitergabe mit Acrobat DC Pro.

Dauer: 1 Tag
Preis: CHF 700.–, exkl. MWST

Ja

Organisator: Digicomp Academy AG

https://digicomp.ch/weiterbildung-media-communication/adobe/kurs-pruefen-von-druck-pdf-in-acrobat-dc-pro--basic

Prüfen von Druck-PDF in Acrobat DC Pro