[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 22
Bewertung:
(14517 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: 12590

7. Jun 2010, 13:24
Beitrag # 2 von 22
Beitrag ID: #443866
Bewertung:
(14512 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 22
Beitrag ID: #443868
Bewertung:
(14495 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: 12590

7. Jun 2010, 14:11
Beitrag # 4 von 22
Beitrag ID: #443871
Bewertung:
(14473 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 22
Beitrag ID: #449018
Bewertung:
(14161 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: 5816

18. Aug 2010, 16:44
Beitrag # 6 von 22
Beitrag ID: #449225
Bewertung:
(14113 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 22
Beitrag ID: #449290
Bewertung:
(14085 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 22
Beitrag ID: #479726
Bewertung:
(13012 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 22
Beitrag ID: #479727
Bewertung:
(13008 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: 1034

15. Sep 2019, 11:39
Beitrag # 10 von 22
Beitrag ID: #571878
Bewertung:
(7442 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: 5816

15. Sep 2019, 12:06
Beitrag # 11 von 22
Beitrag ID: #571879
Bewertung:
(7429 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: 1034

15. Sep 2019, 12:21
Beitrag # 12 von 22
Beitrag ID: #571880
Bewertung:
(7421 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: 1034

15. Sep 2019, 12:50
Beitrag # 13 von 22
Beitrag ID: #571881
Bewertung:
(7414 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: 2683

15. Sep 2019, 13:31
Beitrag # 14 von 22
Beitrag ID: #571882
Bewertung:
(7401 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 Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#571881]

Textrahmen per Script verketten

Hans Haesler
  
Beiträge gesamt: 5816

15. Sep 2019, 13:53
Beitrag # 15 von 22
Beitrag ID: #571883
Bewertung:
(7395 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]
X

Aktuell

InDesign / Illustrator
IDUG_300

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
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/