[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

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

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

cwenet
Beiträge gesamt: 1076

26. Okt 2011, 15:57
Beitrag # 1 von 17
Bewertung:
(5464 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

hiermit möchte ich den Inhalt aller Notizen an der Stelle im Text ausgeben, an der die Notiz zuvor platziert wurde:

Code
var myDocument = app.activeDocument; 

var mypages=myDocument.pages.length;
for(p=0;p<mypages;++p)
{
for (t=0;t<myDocument.pages.item(p).allPageItems.length;++t)
{
if(myDocument.pages.item(p).allPageItems[t].constructor.name=="TextFrame")
{
for (i=0;i<myDocument.pages.item(p).allPageItems[t].paragraphs.length;++i)
{
for (j=0;j<myDocument.pages.item(p).allPageItems[t].paragraphs.item(i).notes.length;++j)
{



if (myDocument.pages[p].allPageItems[t].paragraphs[i].notes[j].userName == "Satzanweisung"){
var myNote = myDocument.pages[p].allPageItems[t].paragraphs[i].notes[j];
var myParagraph = myDocument.pages[p].allPageItems[t].paragraphs[i];

myParagraph.insertionPoints[-1].contents = '\r'+myNote.texts[0].contents+'\r\r';

}
}
}
}
}
}


Das funktíoniert fast prima.
Der Inhalt der Notiz wird am Absatzende ausgegeben (3 neue Absätze entstehen):
[Leerer Absatz]
Inhalt der Notiz
[Leerer Absatz]

Nun möchte ich diese 3 neu entstandenen Absätze jeweils mit einem Absatzformat versehen.
Wie komme ich denn da hinterher dran?

Und:
mit insertionPoints[-1] gehe ich ans Absatzende. Wie schaffe ich es direkt an der Notizposition meine
3 neuen Absätze zu platzieren?

Grüße
Christoph
X

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

Martin Fischer
  
Beiträge gesamt: 12668

26. Okt 2011, 16:30
Beitrag # 2 von 17
Beitrag ID: #483101
Bewertung:
(5454 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

Antwort auf: mit insertionPoints[-1] gehe ich ans Absatzende. Wie schaffe ich es direkt an der Notizposition meine 3 neuen Absätze zu platzieren?


Wirf mal einen Blick auf die Eigenschaften einer note.
Z.B. in der JavaScript Referenz von jongware, die ich Dir ans Herz lege.

Dort findest Du etwas, was Dir sagt, wo im Text die Notiz sitzt.


als Antwort auf: [#483100]
(Dieser Beitrag wurde von Martin Fischer am 26. Okt 2011, 16:31 geändert)

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

cwenet
Beiträge gesamt: 1076

27. Okt 2011, 14:15
Beitrag # 3 von 17
Beitrag ID: #483177
Bewertung:
(5401 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

danke für Deine Antwort. Das Einzige was passen könnte habe ich versucht. Jetzt sieht es so aus. Aber die Eigenschaft wird leider nicht unterstützt. Ich sehe die Lösung leider nicht:

Auch klappt die Zuweisung der Absatzformate nicht.
Jetzt haben alle Absätze das Format "Legende_Ende"

Code
var myDocument = app.activeDocument; 

var mypages=myDocument.pages.length;
for(p=0;p<mypages;++p)
{
for (t=0;t<myDocument.pages.item(p).allPageItems.length;++t)
{
if(myDocument.pages.item(p).allPageItems[t].constructor.name=="TextFrame")
{
for (i=0;i<myDocument.pages.item(p).allPageItems[t].paragraphs.length;++i)
{
for (j=0;j<myDocument.pages.item(p).allPageItems[t].paragraphs.item(i).notes.length;++j)
{



//if (myDocument.pages[p].allPageItems[t].paragraphs[i].notes[j].userName == "Satzanweisung"){
var myNote = myDocument.pages[p].allPageItems[t].paragraphs[i].notes[j];
var myParagraph = myDocument.pages[p].allPageItems[t].paragraphs[i];

var notizpos = myNote.insertionPoints;

myParagraph.insertionPoints[notizpos].contents = '\r';
myParagraph.appliedParagraphStyle = "Legende_Start";

myParagraph.insertionPoints[notizpos].contents = myNote.texts[0].contents;
myParagraph.appliedParagraphStyle = "Legende_txt";

myParagraph.insertionPoints[notizpos].contents = '\r\r';
myParagraph.appliedParagraphStyle = "Legende_Ende";

//}
}
}
}
}
}


Gruß
Christoph


als Antwort auf: [#483101]

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

Martin Fischer
  
Beiträge gesamt: 12668

27. Okt 2011, 14:24
Beitrag # 4 von 17
Beitrag ID: #483179
Bewertung:
(5398 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Das Einzige was passen könnte habe ich versucht.


Versuch's nochmal mit dem storyOffset einer note, anstatt den insertionPoints.


als Antwort auf: [#483177]

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

cwenet
Beiträge gesamt: 1076

27. Okt 2011, 14:52
Beitrag # 5 von 17
Beitrag ID: #483192
Bewertung:
(5381 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
So kommt schon mal der richtige Wert heraus:

Code
var notizpos = myNote.storyOffset.index; 
alert(notizpos);


Hier wird aber jetzt gemeckert:

Code
myParagraph.insertionPoints[notizpos].contents = '\r'; 
myParagraph.appliedParagraphStyle = "Legende_Start";

myParagraph.insertionPoints[notizpos].contents = myNote.texts[0].contents;
myParagraph.appliedParagraphStyle = "Legende_txt";

myParagraph.insertionPoints[notizpos].contents = '\r\r';
myParagraph.appliedParagraphStyle = "Legende_Ende";


Objekt ungültig.

Bitte um weitere Hilfe.
Gruß
Christoph


als Antwort auf: [#483179]

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

Martin Fischer
  
Beiträge gesamt: 12668

27. Okt 2011, 15:38
Beitrag # 6 von 17
Beitrag ID: #483216
Bewertung:
(5373 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
StoryOffset gibt einen InsertionPoint zurück.
Dessen Index bezieht sich auf die parentStory, nicht auf den Absatz.
Deswegen scheitert myParagraph.insertionPoints[notizpos], wenn myParagraph nicht zufällig der erste Absatz im Textabschnitt ist.

Ins Blaue hinein ... versuch's mal mit
Code
myNote.storyOffset.contents = '\r' + myNote.texts.firstItem().contents + '\r\r'; 


Eventuell hilft auch das Verschieben move() des Textobjekts aus der Notiz hinter (LocationOptions.AFTER) oder vor (LocationOptions.BEFORE) den Einfügepunkt myNote.storyOffset.


als Antwort auf: [#483192]

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

cwenet
Beiträge gesamt: 1076

27. Okt 2011, 16:03
Beitrag # 7 von 17
Beitrag ID: #483225
Bewertung:
(5361 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Martin für die Erklärung und den Codeschnipsel,

es funktioniert fast.
Nun werden diese 3 Absätze insgesmat 12 mal ausgegeben, obwohl ich nur 1 Notiz habe. Insgeamt gibt es in meinem Testdokument nur 1 Seite mit 2 Absätze.
Komisch, woher nimmt Indesign die Information alles gleich 12 mal auszugeben?

Grüße
Christoph


als Antwort auf: [#483216]

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

Martin Fischer
  
Beiträge gesamt: 12668

27. Okt 2011, 16:19
Beitrag # 8 von 17
Beitrag ID: #483228
Bewertung:
(5350 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Komisch, woher nimmt Indesign die Information alles gleich 12 mal auszugeben?


Bei wunderbaren Vermehrungen würde ich mir als Erstes mal die (verschachtelten) Schleifen genauer ansehen.


als Antwort auf: [#483225]

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

cwenet
Beiträge gesamt: 1076

27. Okt 2011, 18:51
Beitrag # 9 von 17
Beitrag ID: #483243
Bewertung:
(5318 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für den Tipp Martin,

ich vermute mal, dass es an dem Zähler i liegt.
Während der Ausführung kommen ja neue Absätze hinzu.
Evtl. werden die auch mitgezählt.
Muss ich das womöglich ganz anders aufbauen?

Da komme ich aber leider nicht mehr weiter.
Reicht da nicht nur 1 Schleife?

Gruß
Christoph


als Antwort auf: [#483228]

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

WernerPerplies
Beiträge gesamt: 2693

27. Okt 2011, 19:10
Beitrag # 10 von 17
Beitrag ID: #483245
Bewertung:
(5312 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

ich weiß nicht, ob Du uns das ganze Script gezeigt, aber falls Du noch irgendwo eine Schleife mit i verwendest, hast Du ein Problem:

for (i=0;i<myDocument.pages.item(p).allPageItems[t].paragraphs.length;++i)
{
for (j=0;j<myDocument.pages.item(p).allPageItems[t].paragraphs.item(i).notes.length;++j)
{
i=0 und j=0 sind bei JavaScript Todsünden, Du definierst da globale Variablen!

korrekt wäre:

var i=0, ...
und
var j=0, ...

Ergänzung:

Und Du hast natürlich recht, Du produzierst neue Absätze, da ändert sich die Anzahl der Absätze und i zeigt auf neu erzeugte Absätze.

Probier mal, die Anzahl der Absätze am Anfang in eine Variable umzuspeichern und die Absätze von hinten zu durchlaufen, in etwa so:
var AnzahlDerAbsätze = myDocument.pages.item(p).allPageItems[t].paragraphs.length-1;
for (var i= AnzahlDerAbsätze; i>=0; i--)
{...}


als Antwort auf: [#483243]
(Dieser Beitrag wurde von WernerPerplies am 27. Okt 2011, 19:25 geändert)

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

cwenet
Beiträge gesamt: 1076

27. Okt 2011, 19:23
Beitrag # 11 von 17
Beitrag ID: #483246
Bewertung:
(5300 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Werner für den Hinweis,

ich zeige nochmals meinen aktuellen Stand:

Code
var myDocument = app.activeDocument; 

var mypages=myDocument.pages.length;

for(var p=0;p<mypages;++p)
{
for (var t=0;t<myDocument.pages.item(p).allPageItems.length;++t)
{
if(myDocument.pages.item(p).allPageItems[t].constructor.name=="TextFrame")
{
for (var i=0;i<myDocument.pages.item(p).allPageItems[t].paragraphs.length;++i)
{
for (var j=0;j<myDocument.pages.item(p).allPageItems[t].paragraphs.item(i).notes.length;++j)
{


//if (myDocument.pages[p].allPageItems[t].paragraphs[i].notes[j].userName == "Satzanweisung"){
var myNote = myDocument.pages[p].allPageItems[t].paragraphs[i].notes[j];
var myParagraph = myDocument.pages[p].allPageItems[t].paragraphs[i];


myNote.storyOffset.contents = '\r' + myNote.texts.firstItem().contents + '\r\r';

//}
}
}
}
}
}


Wahrscheinlich muss ich dass besser alles Rückwärts laufen lassen.
Kenne mich aber immer noch zu wenig aus.

Grüße
Christoph


als Antwort auf: [#483245]

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

WernerPerplies
Beiträge gesamt: 2693

27. Okt 2011, 19:24
Beitrag # 12 von 17
Beitrag ID: #483248
Bewertung:
(5299 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Christoph,
ich habe meinen Beitrag noch einmal geändert.


als Antwort auf: [#483246]

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

cwenet
Beiträge gesamt: 1076

27. Okt 2011, 19:45
Beitrag # 13 von 17
Beitrag ID: #483250
Bewertung:
(5284 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieben Dank Werner,
so klappt es.

Wo ich mir noch die Zähne ausbeisse, ist die Formatierung der 3 neu entstandenen Absätze:

Code
var myDocument = app.activeDocument; 

var mypages=myDocument.pages.length;

for(var p=0;p<mypages;++p)
{
for (var t=0;t<myDocument.pages.item(p).allPageItems.length;++t)
{
if(myDocument.pages.item(p).allPageItems[t].constructor.name=="TextFrame")
{

var AnzahlDerAbsaetze = myDocument.pages.item(p).allPageItems[t].paragraphs.length-1;

for (var i= AnzahlDerAbsaetze; i>=0; i--)
{
for (var j=0;j<myDocument.pages.item(p).allPageItems[t].paragraphs.item(i).notes.length;++j)
{


var myNote = myDocument.pages[p].allPageItems[t].paragraphs[i].notes[j];
var myParagraph = myDocument.pages[p].allPageItems[t].paragraphs[i];


myNote.storyOffset.contents = '\r\r' ;
myParagraph.paragraphs[i-1].appliedParagraphStyle = "Legende_Start" ;

myNote.storyOffset.contents = myNote.texts.firstItem().contents;
myParagraph.paragraphs[i].appliedParagraphStyle = "Legende_txt" ;

myNote.storyOffset.contents = '\r' ;
myParagraph.paragraphs[i+1].appliedParagraphStyle = "Legende_Ende" ;

//myNote.storyOffset.contents = '\r\r' + myNote.texts.firstItem().contents + '\r';


}
}
}
}
}


So will mir das nicht gelingen.
Hat jemand noch eine Idee?
Danke und Gruß
Christoph


als Antwort auf: [#483248]

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

WernerPerplies
Beiträge gesamt: 2693

27. Okt 2011, 19:52
Beitrag # 14 von 17
Beitrag ID: #483252
Bewertung:
(5282 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

ich schaue mir das morgen früh noch mal genauer an, aber so auf den ersten Blick, müsste das nicht
Code
[i], [i+1], [i+2] 

heißen?


als Antwort auf: [#483250]

Inhalt von Notizen in den Fliesstext bringen (CS5, WIN, JSX)

cwenet
Beiträge gesamt: 1076

27. Okt 2011, 20:32
Beitrag # 15 von 17
Beitrag ID: #483255
Bewertung:
(5254 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

ja, dachte ich auch erst.
Aber ich bekomme immer einen Fehler: Objekt ungültig.

Diese Zeile wirft den Fehler aus:
var myDocument = app.activeDocument;

Code
var mypages=myDocument.pages.length;  

for(var p=0;p<mypages;++p)
{
for (var t=0;t<myDocument.pages.item(p).allPageItems.length;++t)
{
if(myDocument.pages.item(p).allPageItems[t].constructor.name=="TextFrame")
{

var AnzahlDerAbsaetze = myDocument.pages.item(p).allPageItems[t].paragraphs.length-1;

for (var i= AnzahlDerAbsaetze; i>=0; i--)
{
for (var j=0;j<myDocument.pages.item(p).allPageItems[t].paragraphs.item(i).notes.length;++j)
{


var myNote = myDocument.pages[p].allPageItems[t].paragraphs[i].notes[j];
var myParagraph = myDocument.pages[p].allPageItems[t].paragraphs[i];




myNote.storyOffset.contents = '\r\r' + myNote.texts.firstItem().contents + '\r';

myParagraph.paragraphs[i].appliedParagraphStyle = "Legende_Start" ; <<====== Fehler
myParagraph.paragraphs[i+1].appliedParagraphStyle = "Legende_txt" ;
myParagraph.paragraphs[i+2].appliedParagraphStyle = "Legende_Ende" ;

}
}
}
}
}


Gruß
Christoph


als Antwort auf: [#483252]
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
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/