Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Skript für die Textauswahl

Skript für die Textauswahl

29design
Beiträge gesamt: 5

30. Mai 2016, 15:36
Bewertung:

gelesen: 1506

Beitrag als Lesezeichen
Hallo,

ich bin recht neu auf dem Gebiet des Skriptens und suche aktuell eine Möglichkeit einen beliebigen Text in einem InDesign Dokument zu suchen und zu markieren (selektieren) und danach den Rahmen an den Inhalt (FitOptions.frameToContent) anzupassen. Habe mir gedacht ich könnte das über ne Grep Funktion machen, komme da aber leider gar nicht weiter (siehe unten). Kann jemand helfen?

Vielen Dank im Voraus

Code
app.findGrepPreferences = NothingEnum.nothing; 
app.changeGrepPreferences = NothingEnum.nothing;
var eingabe = prompt("Bitte Suchbegriff eingeben:");
app.findGrepPreferences.findWhat = eingabe;

Skript für die Textauswahl

Kai Rübsamen
Beiträge gesamt: 4684

30. Mai 2016, 17:00
Bewertung:

gelesen: 1475

Beitrag als Lesezeichen
Hallo u. Herzlich Willkommen in der Skriptwerkstatt.

Du musst so denken, wie im UI (und ein bisschen weiter …):

Wenn du die Suche festlegst, musst du sie auch ausführen. Was aber, wenn der User auf 'Abbrechen' geklickt hat? Dann muss auch dein Skript abbrechen.

Die Textstelle nutzt dir ja erstmal nichts. Du musst also für den Text den dazugehörigen Textrahmen finden und dann diesen anpassen.

In manchen Fällen kann durch 'fit()' der Zeilenfall verrutschen. Dann müsste man das Anpassen anders schreiben.

Code
// die Einstellungen zurücksetzen 
app.findGrepPreferences = app.changeGrepPreferences = null;
// die Eingabe vorbereiten …
var eingabe = prompt("Bitte Suchbegriff eingeben:", "");
// … und falls nicht auf 'Abbrechen' geklickt wurde …
if (eingabe == null) {
exit();
}
// … in das Suchfeld übernehmen
app.findGrepPreferences.findWhat = eingabe;
// die Suche ausführen
var allFounds = app.documents[0].findGrep();
// die Einstellungen zurücksetzen
app.findGrepPreferences = app.changeGrepPreferences = null;

// eine Schleife durch alle Fundstellen
for (var i = 0; i < allFounds.length; i++) {
var curFound = allFounds[i];
// den passenden Textrahmen ermitteln
var tf = curFound.parentTextFrames[0];
// und den Rahmen anpassen
tf.fit(FitOptions.frameToContent);
}


Gruß Kai Rübsamen

(Dieser Beitrag wurde von Kai Rübsamen am 30. Mai 2016, 17:04 geändert)

Skript für die Textauswahl

29design
Beiträge gesamt: 5

31. Mai 2016, 08:45
Bewertung:

gelesen: 1343

Beitrag als Lesezeichen
Super. Das hilft mir weiter.

Vielen Dank :)

Skript für die Textauswahl

29design
Beiträge gesamt: 5

31. Mai 2016, 09:40
Bewertung:

gelesen: 1319

Beitrag als Lesezeichen
Sorry hab doch noch ne Frage.
Ich habe jetzt hier das Problem, dass der zu ändernde Text (bzw. das Textfeld) in einem anderen Textfeld liegt.
Wie komme ich denn daran? Bestimmt über parent, oder?

Skript für die Textauswahl

Kai Rübsamen
Beiträge gesamt: 4684

31. Mai 2016, 10:27
Bewertung:

gelesen: 1299

Beitrag als Lesezeichen
Das habe ich nicht verstanden! Bitte Beispiel vorher/nachher.

Gruß Kai Rübsamen

Skript für die Textauswahl

29design
Beiträge gesamt: 5

31. Mai 2016, 10:30
Bewertung:

gelesen: 1297

Beitrag als Lesezeichen
Habs gerade selbst hinbekommen, danke