Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Übersatztext löschen

Übersatztext löschen

MarioF
Beiträge gesamt: 390

28. Mai 2019, 02:56
Bewertung:

gelesen: 3732

Beitrag als Lesezeichen
Hallo,
ich stehe mal wieder auf'm Schlauch. Ich möchte Übersatztext löschen. So lange sich auf der Seite nur ein Textrahmen befindet, geht es, aber bei mehreren TR wird das Script nur beim zuletzt angelegten TR ausgeführt.
Code
var _dok = app.activeDocument; 
var _auswahl = app.selection;

if (
_auswahl.length == 0
) {
alert('Es wurde kein Objekt ausgewählt');
exit()
}

else {
var _story = _auswahl[0].parentStory;
var _letztesZeichen = _dok.stories[0].characters[-1];

if (
_letztesZeichen.parentTextFrames.length == 0
)
{
while (_story.overflows)
_story.characters.lastItem().remove();
}
}


Könnt ihr mir auf die Sprünge helfen?
---
Viele Grüße
Mario

Übersatztext löschen

Martin Fischer
  
Beiträge gesamt: 12783

28. Mai 2019, 07:30
Bewertung:

gelesen: 3705

Beitrag als Lesezeichen
Hallo Mario,

mit _auswahl[0].parentStory sprichst Du den Textabschnitt eines (einzigen) ausgewählten PageItems an.
Um die Textabschnitte aller ausgewählten Textrahmen zu adressieren brauchst Du eine Schleife durch die Elemente der _auswahl.

z.B.
Code
for (var i = 0; i < _auswahl.length; i++) 
{
var _story = _auswahl[i].parentStory;
// ...
}


Allerdings solltest Du dabei auch prüfen, ob das jeweilige Element der Auswahl auch einen Textabschnitt beinhaltet (hasOwnProperty('parentStory')). Denn es könnten sich ja auch Gruppen oder graphische Objekte (ohne Text) in der Auswahl befinden.

Ferner würde ich empfehlen, statt in einem Textabschnitt mit Übersatz von hinten herein der Reihe nach Zeichen für Zeichen zu löschen, bis der Übersatz beseitigt ist (was bei sehr umfangreichem Übersatz ziemlich lange dauern könnte), den Index des letzten Zeichens des Textabschnitts im letzten Textrahmen/Container desselben zu ermitteln und den Text vom nächsten Zeichen (das erste im Übersatz) bis zum letzten Zeichen des Textabschnitts zu löschen (itemByRange([Index erstes Zeichen im Übersatz], [Index letztes Zeichen des Textabschnitts]).

Bei Verwendung des Absatzsetzers müsstest Du freilich nach dem Löschen dieses Zeichenbereichs nochmal prüfen, ob der Übersatz damit tatsächlich beseitigt ist. Also das Löschen des Übersatzbereichs am besten in eine Schleife packen: while (_story.overflows) ...

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 28. Mai 2019, 08:07 geändert)

Übersatztext löschen

MarioF
Beiträge gesamt: 390

28. Mai 2019, 08:37
Bewertung:

gelesen: 3690

Beitrag als Lesezeichen
Vielen Dank für die Infos Martin. Werde mir es Malbuch Gemüte führen und sehen, ob ich es verstanden habe ;-)
---
Viele Grüße
Mario

Übersatztext löschen

MarioF
Beiträge gesamt: 390

28. Mai 2019, 14:42
Bewertung: ||

gelesen: 3641

Beitrag als Lesezeichen
An der Stelle hat mir der Beitrag https://www.hilfdirselbst.ch/foren/Mit_%DCbersatztext_arbeiten_P409818.html sehr weiter geholfen.

Danke!
---
Viele Grüße
Mario