Connect failed: Connection timed out

[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: 5961

14. Sep 2011, 23:55
Beitrag # 1 von 12
Bewertung:
(8281 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…
X

Textframe und den darin enthaltenen Text ansprechen

Martin Fischer
  
Beiträge gesamt: 12779

15. Sep 2011, 07:07
Beitrag # 2 von 12
Beitrag ID: #480275
Bewertung: |||
(8258 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() 



als Antwort auf: [#480271]

Textframe und den darin enthaltenen Text ansprechen

WernerPerplies
Beiträge gesamt: 2760

15. Sep 2011, 07:31
Beitrag # 3 von 12
Beitrag ID: #480277
Bewertung:
(8243 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.


als Antwort auf: [#480271]

Textframe und den darin enthaltenen Text ansprechen

Martin Fischer
  
Beiträge gesamt: 12779

15. Sep 2011, 07:39
Beitrag # 4 von 12
Beitrag ID: #480278
Bewertung:
(8240 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();
}



als Antwort auf: [#480271]

Textframe und den darin enthaltenen Text ansprechen

WernerPerplies
Beiträge gesamt: 2760

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

so kann man das natürlich auch machen.


als Antwort auf: [#480278]

Textframe und den darin enthaltenen Text ansprechen

Ralf Hobirk
Beiträge gesamt: 5961

15. Sep 2011, 20:30
Beitrag # 6 von 12
Beitrag ID: #480325
Bewertung:
(8151 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… ;-)


als Antwort auf: [#480275]

Textframe und den darin enthaltenen Text ansprechen

Martin Fischer
  
Beiträge gesamt: 12779

16. Sep 2011, 07:53
Beitrag # 7 von 12
Beitrag ID: #480337
Bewertung:
(8111 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.


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: 5961

16. Sep 2011, 11:43
Beitrag # 8 von 12
Beitrag ID: #480357
Bewertung:
(8077 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)!


als Antwort auf: [#480337]

Textframe und den darin enthaltenen Text ansprechen

Ralf Hobirk
Beiträge gesamt: 5961

16. Sep 2011, 14:08
Beitrag # 9 von 12
Beitrag ID: #480369
Bewertung:
(8049 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!


als Antwort auf: [#480357]

Textframe und den darin enthaltenen Text ansprechen

Martin Fischer
  
Beiträge gesamt: 12779

16. Sep 2011, 14:26
Beitrag # 10 von 12
Beitrag ID: #480370
Bewertung:
(8039 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).


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: 5961

16. Sep 2011, 14:47
Beitrag # 11 von 12
Beitrag ID: #480374
Bewertung:
(8025 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.


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:
(4223 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