[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Textframe und den darin enthaltenen Text ansprechen

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

Textframe und den darin enthaltenen Text ansprechen

Ralf Hobirk
Beiträge gesamt: 5826

14. Sep 2011, 23:55
Beitrag # 1 von 12
Bewertung:
(4337 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebe ID-JS-Scripter,

ich habe mich jetzt eine Zeitlang durch den Object Model Viewer gehangelt, finde aber absolut keinen Ansatz für eine vermutlich völlig simple Aufgabe.

Ausgangslage:

Ich habe drei miteinander verknüpfte Textrahmen in einem einseitigen ID-Dokument. Auf den in diesem Textrahmen enthaltenen (importierten oder aktualisierten) Text wird ein Script angewandt, um ihn zu formatieren und zu korrigieren. Dieser Punkt ist erledigt und funktioniert einwandfrei.

Problem:

Ich möchte nun an den Anfang des Scriptes noch Code setzen, der folgendes entsprechend dem GUI ausführt:

Cursor in den Textrahmen setzen und den gesamten Text auswählen. Unabhängig davon, ob das Textwerkzeug oder der schwarze Pfeil aktiv sind, und auch unabhängig davon, ob der Cursor eventuell bereits im betreffenden Text steht.

Der erste der verketteten Textrahmen ist sowohl entsprechend der Koordinaten, als auch chronologisch der erste Textrahmen im Dokument. Ggfs. kann er auch über ein Objektformat angesprochen werden.

Zusatzfrage:

Wenn ich quasi "FindChangeByList" ohne "FindChangeList.txt" ausführen möchte, wo muss ich den durch "RecordFindChange" generierten Code einsetzen, bzw. welchen Code aus "FindChangeByList" kann ich dann löschen?

Hintergrund:

Über den importierten Text läuft zunächst eine Find/Change-Routine, dann wird er per "FirstAndNextStyle" formatiert, und anschließend nochmal mit diversen Find/Change-Routinen bereinigt und ggfs. korrigiert. Ich löse dies im Moment mit gespeicherten "Find Change Queries", die vom Script ausgelöst werden. Ich hätte aber lieber den gesamten Code in einer Datei. Da an mehreren Computern gearbeitet wird, muss ich neben dem eigentlichen Script auch noch die Find Change Queries kopieren, was letztendlich nur eine potentielle Fehlerquelle ist.

Ich bedanke mich jetzt schon für eventuelle Lösungen bzw. Hinweise, die mich in die richtige Richtung führen…

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1)
X

Textframe und den darin enthaltenen Text ansprechen

Martin Fischer
  
Beiträge gesamt: 11930

15. Sep 2011, 07:07
Beitrag # 2 von 12
Beitrag ID: #480275
Bewertung: |||
(4314 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ralf,

zur ersten Frage:

Den Text in den verknüpften Textrahmen hast Du irgendwie adressiert?
Z.B. als Text-Objekt oder als Paragraph-Objekt oder vielleicht sogar als Story-Objekt?

Von diesem Objekt, mit dem Du bisher gearbeitet hast, musst Du zunächst zur übergeordneten story (Textabschnitt) hochklettern. Z.B. _paragraph.parentStory, denn von dieser aus lassen sich dann die Textrahmen, durch die sie 'fließt', ansprechen.

Diese 'Container', welche den Textabschnitt beinhalten, lassen sich über _story.textContainers ansprechen.
Beachte: Eine story kann auch textFrames als 'Kinder' (children; untergeordnete Objekte) haben. Das sind dann die verankerten Textrahmen im Textabschnitt.

Der erste Textrahmen eines Textabschnitts mit bekanntem Absatz ließe sich also folgendermaßen adressieren:
Code
_paragraph.parentStory.textContainers.firstItem(); 


Den Textabschnitt könntest Du – falls tatsächlich nötig – folgendermaßen auswählen:
Code
_paragraph.parentStory.texts.firstItem().select() 


Viele Grüße
Martin


als Antwort auf: [#480271]

Textframe und den darin enthaltenen Text ansprechen

WernerPerplies
Beiträge gesamt: 2280

15. Sep 2011, 07:31
Beitrag # 3 von 12
Beitrag ID: #480277
Bewertung:
(4299 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ralf,

Zitat Wenn ich quasi "FindChangeByList" ohne "FindChangeList.txt" ausführen möchte, wo muss ich den durch "RecordFindChange" generierten Code einsetzen, bzw. welchen Code aus "FindChangeByList" kann ich dann löschen?


Schau Dir doch mal die generierten Scripts meines Programmes
WpsModifiedFindChangeByList an.

Solch ein Script sollte schon einen Teil Deiner Frage beantworten.

Wenn Du mehrere Ersetzungen nacheinander ausführten willst, musst Du vermutlich nur die einzelnen Einträge in ein Array laden und dann eine Schleife abarbeiten.

Falls Du dazu Fragen hast, beantworte ich sie Dir gerne in meinem WpsModifiedFindChangeByList-Forum.

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: [#480271]

Textframe und den darin enthaltenen Text ansprechen

Martin Fischer
  
Beiträge gesamt: 11930

15. Sep 2011, 07:39
Beitrag # 4 von 12
Beitrag ID: #480278
Bewertung:
(4296 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zur zweiten Frage:

Beim Suchen/Ersetzen werden zunächst die Suchen/Ersetzen-Einstellungen gesetzt (dazu gehört als erster Schritt in der Regel das Zurücksetzen der Suchen/Ersetzen-Einstellungen) und anschließend wird der Suchen- oder der Ersetzen-Befehl auf ein Text- oder anderes durchsuchbares Objekt angewandt.

1. Setzen der Suchen/Ersetzen-Einstellungen:
Code
// Zurücksetzen der GREP Suchen/Ersetzen-Einstellungen 
app.findGrepPreferences = null;
app.changeGrepPreferences = null;

// Setzen der Suchen-Einstellung
app.findGrepPreferences.findWhat = '(\\d)-(\\d)';

// Setzen der Ersetzen-Einstellung
app.changeGrepPreferences.changeTo = '$1–$2';


2a. Ausführen der Ersetzung (hier über das gesamte Dokument)
Code
app.activeDocument.changeGrep(); 


2b. Ausführung der Suche mit Ermittlung der Fundstellen
Code
var _found =app.activeDocument.findGrep(); 
if (_found.length > 0)
alert('Erster Fund: ' + _found[0].contents);


Das Setzen der Sucheinstellungen und das Suchen/Ersetzen kannst Du so nach und nach im Code definieren. Du kannst aber auch am Anfang einen erweiterbaren Array mit Suchen- und Ersetzen-Einstellungen definieren und die Ersetzungen später in einer Schleife durch diesen Array vornehmen.

Code
var fc_array = new Array;  
fc_array[0] = [ '(\\d)-(\\d)', '$1–$2' ];
fc_array[1] = [ '(\\d)(\\l)', '$1~<$2' ];
// ...

for (var i = 0; i < fc_array.length; i++)
{
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = fc_array[i][0];
app.changeGrepPreferences.changeTo = fc_array[i][1];
app.activeDocument.changeGrep();
}


Viele Grüße
Martin


als Antwort auf: [#480271]

Textframe und den darin enthaltenen Text ansprechen

WernerPerplies
Beiträge gesamt: 2280

15. Sep 2011, 07:44
Beitrag # 5 von 12
Beitrag ID: #480279
Bewertung:
(4289 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

so kann man das natürlich auch machen.

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: [#480278]

Textframe und den darin enthaltenen Text ansprechen

Ralf Hobirk
Beiträge gesamt: 5826

15. Sep 2011, 20:30
Beitrag # 6 von 12
Beitrag ID: #480325
Bewertung:
(4207 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

vielen Dank für deine Antwort(en).

Ich habe erst jetzt – in den ruhigeren Abendstunden – die Zeit gefunden, mich damit zu beschäftigen. Und ich muss zugeben, dass ich nur "Bahnhof" verstehe…

Antwort auf: Den Text in den verknüpften Textrahmen hast Du irgendwie adressiert?

Da geht's schon los. "Adressiert" ist hier überhaupt nichts. Ich habe nur die drei verknüpften Textrahmen, in die ein Text platziert wird. Keine verankerten Textrahmen oder sonstige Spielereien.

Ich gehe im Moment so vor, dass ich nach dem Platzieren Apfel + A drücke, und dann eine weitere Tastenkombi, die mein Script startet. Wenn der Text bereits platziert ist, aber später aktualisiert wird (er ist mit dem Original-RTF verlinkt, das bei kundenseitigen Änderungen durch serverbasierte und lokale Scripts automatisch ersetzt wird), muss ich vorher noch den Cursor in den Textrahmen setzen.

Ich hatte vorausgesetzt, dass mein Ansinnen völlig einfach zu realisieren ist. Da dem offensichtlich nicht so ist, wird es mir nicht allzu schwer fallen, einen Mausklick und eine Tastenkombi zusätzlich auszuführen… ;-)

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1)


als Antwort auf: [#480275]

Textframe und den darin enthaltenen Text ansprechen

Martin Fischer
  
Beiträge gesamt: 11930

16. Sep 2011, 07:53
Beitrag # 7 von 12
Beitrag ID: #480337
Bewertung:
(4167 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ralf,

Antwort auf [ Ralf ] Und ich muss zugeben, dass ich nur "Bahnhof" verstehe…


Das liegt wohl daran, dass Du in meinem Beitrag eine Antwort auf eine so nicht gestellte Frage gelesen hast.

Ich geb's zu: mir war nicht ganz klar, auf was Du hinauswillst (Cursor in welchen Textrahmen setzen; wozu gesamten Text auswählen) und habe angefangen zu spekulieren und bin dabei von Deiner eigentlichen Aufgabenstellung abgekommen.

Zitat von Ralf Cursor in den Textrahmen setzen und den gesamten Text auswählen. Unabhängig davon, ob das Textwerkzeug oder der schwarze Pfeil aktiv sind, und auch unabhängig davon, ob der Cursor eventuell bereits im betreffenden Text steht.


Es gibt einen, und zwar nur einen, Textabschnitt im Dokument:
Code
app.activeDocument.stories.firstItem().texts.firstItem().select(); 

(Wähle den Text des ersten Textabschnitts des aktiven Dokuments aus.)

Es gibt einen Textrahmen auf der ersten Seite des Dokuments, der mit weiteren Textrahmen (auch auf anderen) Seiten verknüpft ist:
Code
app.activeDocument.pages.firstItem().textFrames.firstItem().parentStory.texts.firstItem().select(); 

(Wähle den Text des Textabschnitts des ersten Textrahmens der ersten Seite des aktiven Dokuments aus.)


Antwort auf: Ich hatte vorausgesetzt, dass mein Ansinnen völlig einfach zu realisieren ist.

Die Aufgabe an sich ist simpel.
Aber der Kontext und das Ziel waren/sind mir nicht ganz klar.

Viele Grüße
Martin


als Antwort auf: [#480325]
(Dieser Beitrag wurde von Martin Fischer am 16. Sep 2011, 07:55 geändert)

Textframe und den darin enthaltenen Text ansprechen

Ralf Hobirk
Beiträge gesamt: 5826

16. Sep 2011, 11:43
Beitrag # 8 von 12
Beitrag ID: #480357
Bewertung:
(4133 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

Antwort auf: Es gibt einen, und zwar nur einen, Textabschnitt im Dokument:

Code
app.activeDocument.stories.firstItem().texts.firstItem().select();

Das sollte es sein. Ja, es gibt zunächst nur einen Textabschnitt im Dokument. Erst später kommen weitere hinzu. Eine Preistabelle und ggfs. Bildbeschriftungen.

Ich werde später testen und berichten. Aber soweit ich den Code interpretiere, sollte es genau das sein. Vielen Dank (mal wieder)!

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1)


als Antwort auf: [#480337]

Textframe und den darin enthaltenen Text ansprechen

Ralf Hobirk
Beiträge gesamt: 5826

16. Sep 2011, 14:08
Beitrag # 9 von 12
Beitrag ID: #480369
Bewertung:
(4105 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

läuft einwandfrei!


Bei dieser Gelegenheit noch ein (Warn-)Hinweis an die Allgemeinheit:

Ich lasse über die Texte u.a. das Script FirstAndNextStyle.jsx laufen. Auch einwandfrei. Aber sobald ich ein RTF in TextEdit öffne und erneut speichere, verweigert FirstAndNextStyle.jsx seinen Dienst und meldet einen Fehler. Ein aus OpenOffice gespeichertes RTF wird hingegen ordnungsgemäß behandelt.

In der Praxis öffne ich die RTFs nicht, habe dies jetzt nur zu Testzwecken getan und bin darauf gestoßen. Mit anderen Worten: TextEdit korrumpiert u.U. Textdateien!

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1)


als Antwort auf: [#480357]

Textframe und den darin enthaltenen Text ansprechen

Martin Fischer
  
Beiträge gesamt: 11930

16. Sep 2011, 14:26
Beitrag # 10 von 12
Beitrag ID: #480370
Bewertung:
(4095 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ralf,

Antwort auf: Ich lasse über die Texte u.a. das Script FirstAndNextStyle.jsx laufen. Auch einwandfrei. Aber sobald ich ein RTF in TextEdit öffne und erneut speichere, verweigert FirstAndNextStyle.jsx seinen Dienst und meldet einen Fehler. Ein aus OpenOffice gespeichertes RTF wird hingegen ordnungsgemäß behandelt.


Das verstehe ich nicht.
FirstAndNextStyles.jsx interessiert sich nicht für RTF, TextEdit, OpenOffice etc.
Es interessiert sich allein für die Absatzformate der ausgewählten Absätze.

Antwort auf: verweigert FirstAndNextStyle.jsx seinen Dienst und meldet einen Fehler.


Der Wortlaut der Fehlermeldung (gerne Bildschirmfoto) wäre interessant.


Könntest Du mir mal eine Datei (IDML) zuschicken, mit der sich das RTF-Problem nachstellen lässt?

Ich würde mir das gerne mal genauer ansehen (komme aber heute nicht dazu).

Viele Grüße
Martin


als Antwort auf: [#480369]
(Dieser Beitrag wurde von Martin Fischer am 16. Sep 2011, 14:27 geändert)

Textframe und den darin enthaltenen Text ansprechen

Ralf Hobirk
Beiträge gesamt: 5826

16. Sep 2011, 14:47
Beitrag # 11 von 12
Beitrag ID: #480374
Bewertung:
(4081 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

Antwort auf: Könntest Du mir mal eine Datei (IDML) zuschicken, mit der sich das RTF-Problem nachstellen lässt?

Werde ich später tun, einschließlich des Scripts und der Angabe welcher Code (Zeile) die Fehlermeldung verursacht und ein paar RTFs.

Sobald ich eines der RTFs – auch ohne jegliche Änderung – aus TextEdit abspeichere, kommt es zu der Fehlermeldung.

---
Viele Grüße aus Istrien Cool
Ralf
---
iMac i7 (12,2) 3,4 GHz, 16 GB | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB | Mac Mini (3,1) als Server 2,53 GHz, 8 GB | 10.11.6 El Capitan | CS6 (ID 8.0.1)


als Antwort auf: [#480370]

Textframe und den darin enthaltenen Text ansprechen

utzfrenkelson
Beiträge gesamt: 2

6. Dez 2018, 14:30
Beitrag # 12 von 12
Beitrag ID: #567917
Bewertung:
(279 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich würde einmal in den Einstellungen von TextEdit nachsehen, wie die Text-Kodierung gehandhabt wird (beim Öffnen und Speichern).
Eventuell ändert TextEdit beim Speichern die Kodierung und dann läuft das Script nicht mehr.


als Antwort auf: [#480374]
X

Photoshop / Lightroom

Veranstaltungen

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen. pdf-icon Hier eine kleine Anleitung.

Veranstaltungen
13.12.2018 - 20.12.2018

3400 Burgdorf, BE
Donnerstag, 13. Dez. 2018, 09.00 Uhr - Donnerstag, 20. Dez. 2018, 09.00 Uhr

Workshop

Schritt für Schritt: Planen, konzipieren und Umsetzen einer responsiven Website mit Wordpress: Lokalen Server einrichten; Frontend/Backend; Vorgehen Schritt für Schritt bis zur fertigen Site.

2-Tages-Workshop CHF 990.00

Ja

Organisator: PubliCollege GmbH

Kontaktinformation: Beat Kipfer, E-Mailinfo AT publicollege DOT ch

www.publicollege.ch

Websites erstellen mit Wordpress und Elementor Pro
Veranstaltungen
19.12.2018

Wie installiert und konfiguriert man Mailchimp und verwendet es für sein Business

Internet
Mittwoch, 19. Dez. 2018, 10.00 - 11.30 Uhr

Webinar

In diesem Webinar zeige ich den Teilnehmern, wie sie mit Mailchimp eigene Newsletter verschicken können. Wie sie Mailchimp installieren und konfigurieren müssen und wie sie eine erste Kampagne machen können.

Gratis

Ja

Organisator: Eric Mächler

https://events.genndi.com/register/818182175026318367/4ac0f277c0

Der Start ins E-Mail Marketing mit Mailchimp