[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:
(8322 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: 12783

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

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

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

15. Sep 2011, 07:44
Beitrag # 5 von 12
Beitrag ID: #480279
Bewertung:
(8274 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:
(8192 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: 12783

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

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

Aktuell

InDesign / Illustrator
MTT_300x300_11_2022

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
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!