[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Textrahmen per Script verketten

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

Textrahmen per Script verketten

vanlent
Beiträge gesamt: 153

7. Jun 2010, 13:16
Beitrag # 1 von 16
Bewertung:
(7513 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebe Indesign-Scripter,

habe ziemlich lange gesucht, aber mein altes CS2-Script "Join-all.js" funktioniert nicht mehr mit CS4. Es hat stets alle Textrahmen (auch aus der Datenzusammenführung;-)) in der richtigen Reihenfolge miteinander verkettet, so daß alle Texte via Absatzmarken in einem Textabschnitt zusammengefaßt wurden.

Ich habe versucht, einfach nur *.jsx hintendranzuhängen. Das alleine hilft nicht!?

Grüße
Frank
X

Textrahmen per Script verketten

Martin Fischer
  
Beiträge gesamt: 12120

7. Jun 2010, 13:24
Beitrag # 2 von 16
Beitrag ID: #443866
Bewertung:
(7508 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Frank,

was macht Dein altes Skript statt dessen?

Wie sieht es aus?
Ist der Code irgendwo einsehbar?


> Ich habe versucht, einfach nur *.jsx hintendranzuhängen.

CS3 und höher akzeptieren *.js undj *.jsx gleichermaßen.
*.jsx kann mit dem ExtendScript Toolkit verknüpft werden, damit sich bei Klick auf eine jsx-Datei dieses mit der geklickten Datei öffnet.

Viele Grüße
Martin




als Antwort auf: [#443864]

Textrahmen per Script verketten

vanlent
Beiträge gesamt: 153

7. Jun 2010, 13:45
Beitrag # 3 von 16
Beitrag ID: #443868
Bewertung:
(7491 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

der Quellcode lautet:
Code
//join_stories.js  
if(app.documents.length != 0){
var myDoc = app.activeDocument;
for (oneStory=myDoc.stories.length-1;oneStory>0;oneStory--){
// fügt am Ende des Textflusses eine Absatzschaltung ein,
// wenn der Textfluß nicht bereits mit einer Absatzschaltung endet.
if (myDoc.stories[oneStory-1].characters.length>0){
if (myDoc.stories[oneStory-1].characters[-1].contents!="\r") myDoc.stories[oneStory-1].insertionPoints[-1].contents="\r";
}
// Verknüpfung des letzten Textrahmens des vorherigen Textflusses (oneStory-1)
// mit dem ersten Textrahmen des aktuellen Textflusses (oneStory)
myDoc.stories[oneStory-1].textFrames[-1].nextTextFrame = myDoc.stories[oneStory].textFrames[0];
}
}


Die Fehlermeldung lautet:
http://www.reinzeichnen.de/mat/fehlermeldung.png

Grüße
Frank


als Antwort auf: [#443866]

Textrahmen per Script verketten

Martin Fischer
  
Beiträge gesamt: 12120

7. Jun 2010, 14:11
Beitrag # 4 von 16
Beitrag ID: #443871
Bewertung:
(7469 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Frank,

versuch's mal mit textContainers an Stelle von textFrames.

Seit CS3 sind die Textrahmen, die ein Textabschnitt durchläuft, textContainers, um sie von den verankerten textFrames im Textabschnitt zu unterscheiden.

Viele Grüße
Martin




als Antwort auf: [#443868]
(Dieser Beitrag wurde von Martin Fischer am 7. Jun 2010, 14:15 geändert)

Textrahmen per Script verketten

der-markus
Beiträge gesamt:

17. Aug 2010, 14:22
Beitrag # 5 von 16
Beitrag ID: #449018
Bewertung:
(7157 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

habe es mal mit dem geänderten Script versucht. Leider kommt da auch eine Fehlermeldung. Bin allerdings absoluter Script-Unwissender.... Gibt es ein funktionierendes Script für CS4 um die Textrahmen zu verketten? Habe nämlich nach einer Datenzusammenführung zwar die Textrahmen auf einer Seite, möchte diese aber gene verketten.

Grüße


als Antwort auf: [#443871]

Textrahmen per Script verketten

Hans Haesler
  
Beiträge gesamt: 5742

18. Aug 2010, 16:44
Beitrag # 6 von 16
Beitrag ID: #449225
Bewertung:
(7109 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Markus,

Martin ist anscheinend abwesend (oder hat Deine Frage nicht gesehen).

Das textFrames muss an zwei Stellen durch textContainers ersetzt werden.

Zusätzlich muss man nach dem ersten Vorkommen das [-1] in [0] ändern: textContainers[0]

Code
//join_stories.js 
if(app.documents.length != 0) {
var myDoc = app.activeDocument;
for (oneStory=myDoc.stories.length-1; oneStory>0; oneStory--) {
// fügt am Ende des Textflusses eine Absatzschaltung ein,
// wenn der Textfluß nicht bereits mit einer Absatzschaltung endet.
if (myDoc.stories[oneStory-1].characters.length>0) {
if (myDoc.stories[oneStory-1].characters[-1].contents!="\r") {
myDoc.stories[oneStory-1].insertionPoints[-1].contents="\r";
}
}
// Verknüpfung des letzten Textrahmens des vorherigen Textflusses (oneStory-1)
// mit dem ersten Textrahmen des aktuellen Textflusses (oneStory)
myDoc.stories[oneStory-1].textContainers[0].nextTextFrame = myDoc.stories[oneStory].textContainers[0];
}
}

So funktioniert es hier mit CS4.

Gruss, Hans


als Antwort auf: [#449018]

Textrahmen per Script verketten

der-markus
Beiträge gesamt:

19. Aug 2010, 08:02
Beitrag # 7 von 16
Beitrag ID: #449290
Bewertung:
(7081 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Hans,

wunderbar! Hat funktioniert, großes Lob und vielen Dank.

Frohes Schaffen noch.


als Antwort auf: [#449225]

Textrahmen per Script verketten

vanlent
Beiträge gesamt: 153

7. Sep 2011, 10:51
Beitrag # 8 von 16
Beitrag ID: #479726
Bewertung:
(6008 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ihr Lieben,

ich verstehe nicht, warum dieses Script nicht mehr funktioniert?
Die dazugehörige Fehlermeldung ist: http://www.reinzeichnen.de/fileadmin/data/JS-Fehler.png
Habe ganz bewußt als Basis eine Datei genommen, die funktioniert hat.
Hat jemand eine Idee, was dieser Fehler besagt?

Verzweifelte Grüße
Frank


als Antwort auf: [#449290]

Textrahmen per Script verketten

vanlent
Beiträge gesamt: 153

7. Sep 2011, 10:55
Beitrag # 9 von 16
Beitrag ID: #479727
Bewertung:
(6004 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ha!
Habe den Fehler gefunden. Es war ein verankerter leerer Textrahmen.
Habe ihn in einen Grafikrahmen umgewandelt, und jetzt läufts wieder!

Hurra!

Grüße
Frank


als Antwort auf: [#479726]

Textrahmen per Script verketten

cwenet
Beiträge gesamt: 893

15. Sep 2019, 11:39
Beitrag # 10 von 16
Beitrag ID: #571878
Bewertung:
(438 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

bin hier gerade drüber gestolpert. Danke, das Script hilft.

Ich würde es gerne etwas einschränken wollen.

Es sollen nur Rahmen verknüpft werden, die ein Scriptetikett besitzen.

Ich habe diese Ausnahme eingebaut:

Code
 if (myDoc.stories[oneStory-1].textContainers[0].label =="mein_ScriptEtikett"){ 


Der gelbe Textrahmen auf Seite 1 wird dennoch irgendwie mit dem Textrahmen von Seite 6 verknüpft.
Testdokument:
https://www.dropbox.com/...erknuepfen.idml?dl=0

Mit der Bitte um Hilfe
Grüße
Christoph


als Antwort auf: [#449225]

Textrahmen per Script verketten

Hans Haesler
  
Beiträge gesamt: 5742

15. Sep 2019, 12:06
Beitrag # 11 von 16
Beitrag ID: #571879
Bewertung:
(425 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

der zu prüfende Rahmen sollte jener sein, welcher als nächster verknüpft wird.

Also: In Deiner Zeile das '[oneStory-1]' zu '[oneStory]' ändern:

Code
if (myDoc.stories[oneStory].textContainers[0].label == "mein_ScriptEtikett") { 

Und es funktioniert wie gewünscht.

Gruss, Hans


als Antwort auf: [#571878]

Textrahmen per Script verketten

cwenet
Beiträge gesamt: 893

15. Sep 2019, 12:21
Beitrag # 12 von 16
Beitrag ID: #571880
Bewertung:
(417 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Hans,

irgendwie ist da noch ein Durcheinander drin, was die Reihenfolge angeht.
Wie wird denn beim Verknüpfungsvorgang die Reihenfolge festgelegt?

Kann es sein, dass Indesign weiss, in welcher Reihenfolge die Textrahmen zuvor erstellt wurden?

In meinem Fall ist ja pro Seite 1 Textrahmen mit dem bestimmten Scriptetikett.

Wie kann ich die Reihenfolge beeinflussen?

Grüße
Christoph


als Antwort auf: [#571879]

Textrahmen per Script verketten

cwenet
Beiträge gesamt: 893

15. Sep 2019, 12:50
Beitrag # 13 von 16
Beitrag ID: #571881
Bewertung:
(410 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nochmal ich,

es ist vielleicht der sichere Weg, wenn ich die Textrahmen alle der Reihe nach neu erzeuge und dann verknüpfe.

So mache ich es.

Einen schönen Sonntag
Danke und Gruß
Christoph


als Antwort auf: [#571880]

Textrahmen per Script verketten

WernerPerplies
Beiträge gesamt: 2380

15. Sep 2019, 13:31
Beitrag # 14 von 16
Beitrag ID: #571882
Bewertung:
(397 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

Zitat Wie kann ich die Reihenfolge beeinflussen?


Die Reihenfolge bestimmst doch ausschließlich Du, indem Du Dir einen Textrahmen nimmst und in die Eigenschaft previousTextFrame den Vorgängertextrahmen und in die Eigenschaft nextTextFrame den Nachfolgertextrahmen einträgst.

Übrigens:
Mit meinem Skript WpsCreateAnchoredFrames kann man automatisch Textrahmen erzeugen und die Rahmen dann ebenfalls automatisch in der Reihenfolge der Erzeugung automatisch verketten.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING


als Antwort auf: [#571881]

Textrahmen per Script verketten

Hans Haesler
  
Beiträge gesamt: 5742

15. Sep 2019, 13:53
Beitrag # 15 von 16
Beitrag ID: #571883
Bewertung:
(391 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

die Reihenfolge wird durch die Schichtung der Rahmen bestimmt.

Wenn letztere schön brav von Seite eins bis zur letzen und auf jeder Seite von links oben nach rechts unten erzeugt wurden, dann können die Rahmen mit einer Schleife der Reihe nach abgearbeitet werden.

Wenn aber auf jeder Seite nur ein Textrahmen mit dem Label "mein_ScriptEtikett" existiert, dann könnte folgendes Script benutzt werden.

Code
if (app.documents.length != 0) { 
var allPages = app.documents[0].pages;
var nPages = allPages.length;
var labeledFrames = [];
for (p=0; p<nPages; p++) {
var allTextFrames = allPages[p].textFrames;
var nFrames = allTextFrames.length;
for (var t=0; t<nFrames; t++) {
var curFrame = allTextFrames[t];
if (curFrame.label == "mein_ScriptEtikett") {
labeledFrames.push(curFrame);
break;
}
}
}
var nLabeled = labeledFrames.length;
var curFrame = labeledFrames[0];
for (var n=1; n<nLabeled; n++) {
curFrame.nextTextFrame = labeledFrames[n];
curFrame = labeledFrames[n];
}
alert ("Fertig.", "");
}
else {
alert ("Ein Dokument öffnen.", "");
}

Gutes Gelingen!

Gruss, Hans


als Antwort auf: [#571881]
Hier Klicken X

Aktuell

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
17.10.2019

Digicomp Academy AG, Limmatstrasse 50, Zürich
Donnerstag, 17. Okt. 2019, 18.00 - 20.30 Uhr

Vortrag

Farben sind ein wichtiges Gestaltungselement in Corporate Design und Branding. Als Sinneseindruck, der von Beleuchtung, Materialeigenschaften und Kontext abhängt, ist eine Farbe jedoch schwer zu fassen. Der Verein freieFarbe setzt sich für eine offene, digitale Farbkommunikation ein und hat hierzu das HLC-Farbsystem entwickelt. Dieses hilft, zwischen Gestaltung am Computer, physischen Farbmustern und unterschiedlichen Verfahren in der Produktion eine Brücke zu schlagen. Es basiert zudem auf bestehenden ISO-Standards für die Druckindustrie.

Donnerstag, 17. Oktober 2019, 18 bis 20.30 Uhr

Ja

Organisator: Digicomp Academy AG

https://www.meetup.com/de-DE/Publishing-Group-Switzerland/events/264611769/

Freie Farbe für die digitale Zukunft
Veranstaltungen
21.10.2019 - 22.10.2019

München
Montag, 21. Okt. 2019, 09.30 Uhr - Dienstag, 22. Okt. 2019, 17.30 Uhr

Schulung, Seminar

Wer hochwertige und farbechte Ergebnisse im Digitaldruck erzielen will, der braucht umfassende Colormanagemement- und PDF-Kenntnisse. Selbst wenn die Maschine kalibriert und das Rip richtig konfiguriert ist, lassen die Ergebnisse oft zu wünschen übrig. Der Grund hierfür liegt zu 90 % in den Daten und in falsch eingestellten Anwendungsprogrammen, auch in falschen Einstellungen im Druckmenü.

Nein

Organisator: Cleverprinting.de

https://www.cleverprinting.de/zweitaegige-weiterbildung-zum-digitaldruck-operator/

Zweitägige Weiterbildung zum Digitaldruck-Operator