[GastForen Programme Print/Bildbearbeitung Adobe InDesign script seiten entfernen

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

script seiten entfernen

Uwe Laubender
Beiträge gesamt: 5316

29. Okt 2018, 18:20
Beitrag # 16 von 71
Beitrag ID: #567227
Bewertung:
(7452 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Ich suche ein script für indesign mit dem man Seiten, auf denen sich ein bestimmter Text "XXX" befindet komplett aus dem Indesign Dokument gelöscht werden.

Kann mir jemand helfen?


Nur interessehalber; ist dieser Post auch von Dir?

Script zum Entfernen von Seiten die einen bestimmten Textinhalt haben
ahdesigner Oct 26, 2018
https://forums.adobe.com/...ge/10709468#10709468


als Antwort auf: [#567167]
X

script seiten entfernen

gozreh
Beiträge gesamt: 9

29. Okt 2018, 18:31
Beitrag # 17 von 71
Beitrag ID: #567228
Bewertung:
(7448 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ja, ist also schon erledigt


als Antwort auf: [#567227]

script seiten entfernen

Uwe Laubender
Beiträge gesamt: 5316

29. Okt 2018, 18:33
Beitrag # 18 von 71
Beitrag ID: #567229
Bewertung:
(7446 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hm.
Also befinden sich auf den zu löschenden Seiten keine Textrahmen, die mit anderen Rahmen auf anderen Seiten verkettet sind?


als Antwort auf: [#567228]
(Dieser Beitrag wurde von Uwe Laubender am 29. Okt 2018, 18:34 geändert)

script seiten entfernen

gozreh
Beiträge gesamt: 9

29. Okt 2018, 20:36
Beitrag # 19 von 71
Beitrag ID: #567238
Bewertung:
(7423 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
genau, es gibt keine Verketteten Texte, nur Personalisierungen die ich über Datenzusammenführung erstellt habe


als Antwort auf: [#567229]

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

30. Okt 2018, 16:20
Beitrag # 20 von 71
Beitrag ID: #567253
Bewertung:
(7350 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Armin,

soeben entdeckt: Dein Pseudo ist mit einem P ausgezeichnet worden. Herzlichen Dank für die Spende ans Forum! Vorbildlich.

Ich habe Dir per PM die Version 04d zugestellt.

Noch eine Spur schneller, als die Version 03d, weil der Ansatz von Manan Joshi verwendet wird.
Aber im Gegensatz zu seinem Vorschlag, läuft die Schleife rückwärts. Sonst dauert die Ausführung zu lange.

Ich habe Dokumente verschiedenen Umfangs erstellt: 21, 99, 198, 297, 396, 594 und 891 Seiten.
Und insgesamt nahezu 100 Testläufe durchgeführt: A. ohne Massnahmen; B. unsichtbar geöffnet; C. Preflight aus; D. Auffrischung aus; E. Preflight+Auffrischung aus. Für C, D und E wird das Dokument ebenfalls unsichtbar geöffnet.

Die besten Ergebnisse gab es mit E.

*****
@ Werner: Je nach Anzahl Seiten, wirken sich die Massnahmen (unsichtbar geöffnet, Preflight aus, Auffrischung aus) nicht gross aus. Aber je mehr Seiten ein Dokument enthält, desto besser wird eine Geschwindigkeitssteigerung spürbar.
Zum Beispiel: Mit 891 Seiten wird die Ausführungszeit mehr als halbiert (statt 570 nur 258 Sekunden).

Ach ja: Der Fortschrittsbalken ist noch nicht drin.

*****
@ Thomas: Der Preflight ist nicht die vermutete grosse Bremse. Aber sein Ausschalten hilft schon. Unterschiedlich sind die Ergebnisse für das Seiten-Bedienfeld. Erstaunlicherweise ist der Wert öfter besser, wenn es sichtbar ist.

*****
@ Uwe: Im Beitrag #3 findest Du einen WeTransfer-Link zu einem zweiseitigen Dokument. Beides sind Rückseiten (die Vorderseite fehlt). Wenn die erste Rückseite den Euro-Betrag "XX,XX" enthält, dann muss diese Seite entfernt werden. Sind aber Ziffern da (z.B. "72,48"), dann muss die zweite Rückseite gelöscht werden.

Vielleicht stellt Dir Armin sein 21-Seiten-Dokument zur Verfügung.

Danke für den Link zur Diskussion im Adobe-Forum. Ich habe die Idee von Manan Joshi adoptiert. Aber wie schon oben erwähnt: Die Schleife muss rückwärts laufen. Sonst dauert es viel zu lange.

Gruss, Hans


als Antwort auf: [#567238]

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

30. Okt 2018, 18:21
Beitrag # 21 von 71
Beitrag ID: #567259
Bewertung:
(7327 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Armin,

jetzt habe ich ein Dokument erstellt, welches 1719 Seiten umfasst.

Und die Version 04d des Scripts gestartet. Nach 1696 Sekunden kam die Meldung "Fertig."
Das sind 28 Minuten und 15 Sekunden. Also weniger als die Hälfte der Zeit, welche die Version 02d benötigte.

Gruss, Hans


als Antwort auf: [#567238]

script seiten entfernen

gozreh
Beiträge gesamt: 9

30. Okt 2018, 19:51
Beitrag # 22 von 71
Beitrag ID: #567260
Bewertung:
(7313 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Du bist der Hammer. Wahnsinn! Danke nochmals


als Antwort auf: [#567259]

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

30. Okt 2018, 20:27
Beitrag # 23 von 71
Beitrag ID: #567261
Bewertung:
(7302 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Armin,

bitte sehr. Und danke für das Kompliment. :-)

Ich werde noch versuchen, einen Fortschrittsbalken einzubauen. Wird nicht einfach sein, weil die Seiten in zwei Sitzungen abgeräumt werden.

Zudem dauert es – bei einem umfangreichen Dokument – nach dem Entfernen der letzten Seite eine schöne Weile, bis InDesign seine "Buchhaltung" nachgeführt hat und wieder ansprechbar ist.

Gruss, Hans


als Antwort auf: [#567260]

script seiten entfernen

Uwe Laubender
Beiträge gesamt: 5316

31. Okt 2018, 11:18
Beitrag # 24 von 71
Beitrag ID: #567270
Bewertung:
(7203 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
das Aussortieren der Seiten wegen doppelter Seitennamen würde ich mit einem assoziativen Array machen. Davon abgesehen würde ich das nicht mit den Seitennamen, sondern mit der ID einer Seite versuchen.

Das Löschen geht dann über eine for x in-Schleife mit pages.itemByID(n).remove().
Da braucht nicht darauf geachtet werden, ob rückwärts oder vorwärts.

Könnte mir vorstellen, dass dies die Angelegenheit noch etwas beschleunigt, da die die direkten DOM-Zugriffe möglicherweise minimiert werden.

Hier ein Beispiel, das nur mit "XXX" als gefundener String funktioniert:

Code
( function() 
{

app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL;

app.doScript
(

removePageIfXXXfound,
ScriptLanguage.JAVASCRIPT,
[],
UndoModes.ENTIRE_SCRIPT,
"Remove Page if XXX Is Found | SCRIPT"

);

function removePageIfXXXfound()
{

app.findTextPreferences.findWhat = "XXX";
var doc = app.activeDocument;
var contentList = doc.findText();

var pageIDArray = [];
var x ;

for(var i = 0 ; i < contentList.length; i++)
{
var parentPage = contentList[i].parentTextFrames[0].parentPage;
if( parentPage == null ){ continue };

pageIDArray[ parentPage.id.toString() ] = parentPage.id ;
};

for( x in pageIDArray )
{
if( doc.pages.length == 1 ){ break };
doc.pages.itemByID( pageIDArray[x] ).remove();
};

app.findTextPreferences = NothingEnum.nothing;

};

}() )



als Antwort auf: [#567261]

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

31. Okt 2018, 11:31
Beitrag # 25 von 71
Beitrag ID: #567271
Bewertung:
(7194 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

danke für Deinen Vorschlag. Ich werde ihn übernehmen, um zu prüfen, ob damit eine Beschleunigung herausschaut.

Das Aussortieren von eventuell doppelten Seitennamen hatte ich nur im Anfang drin. Aber als dann klar war, dass keine doppelten Vorkommen möglich sind, habe ich die Prüfung herausgenommen.
In der Version 04d werden auch keine Seitennamen mehr benutzt, sondern die Methode von Hanan.

Gruss, Hans


als Antwort auf: [#567270]

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

31. Okt 2018, 17:39
Beitrag # 26 von 71
Beitrag ID: #567277
Bewertung:
(7145 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

das Erstellen eines Arrays (statt jedes Mal direkt die Seite zu löschen) bringt tatsächlich etwas.
Mit dem 1719-Seiten-Dokument macht der Unterschied 204 Sekunden aus: Nur noch knapp 25 Minuten.

Anstelle der IDs verwende ich den documentOffset. Damit ist es einfacher, an die nächste Seite zu kommen, welche bei vorhandenen Euro-Beträgen entfernt werden muss.

Zudem habe ich den Code noch etwas vereinfacht. parentPage == null kann es in diesem Dokument nicht geben. Kein Rahmen ist ausserhalb einer Seite.
Und es muss auch nicht jedes Mal geprüft werden, ob das Dokument noch mehr als eine Seite umfasst.

Code
// aktuelles Dokument 
var curDoc = app.documents[0];

// das Suchmuster vorbereiten
app.findTextPreferences.findWhat = "XX,XX";

// die Vorkommen finden und zählen
var xxFound = curDoc.findText();
var nXX = xxFound.length;

// eine Schleife durch die Vorkommen und die Seiten entfernen
var pageArr = [];
for (var n=nXX-1; n>-1; n--) {
pageArr[n] = xxFound[n].parentTextFrames[0].parentPage.documentOffset;
}
for (x in pageArr) {
curDoc.pages[pageArr[x]].remove();
}

Und noch die zweite Aktion zum Entfernen der zweiten Rückseite:

Code
// das Suchmuster vorbereiten 
app.findGrepPreferences.findWhat = "[0-9]+,[0-9]{2}";

// die Vorkommen finden und zählen
var eurFound = curDoc.findGrep();
var nEur = eurFound.length;

// eine Schleife durch die Vorkommen und die Seiten entfernen
var pageArr = [];
for (var n=nEur-1; n>-1; n--) {
pageArr[n] = (eurFound[n].parentTextFrames[0].parentPage.documentOffset)+1;
}
for (x in pageArr) {
curDoc.pages[pageArr[x]].remove();
ctr++;
}

// die Suchen/Ersetzen-Vorgaben zurücksetzen
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findTextPreferences = app.changeTextPreferences = null;

Okay, ich weiss, wir sind hier nicht in der Skriptwerkstatt ... :-)

Gruss, Hans


als Antwort auf: [#567270]

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

31. Okt 2018, 17:40
Beitrag # 27 von 71
Beitrag ID: #567278
Bewertung:
(7145 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Armin,

ich habe Dir die Version 05d per PM zugestellt.

Dank der Anregung von Uwe dauert die Ausführung "nur" noch knapp 25 Minuten.

Fortschrittsanzeige: Hatte ich in einer Beta-Version eingefügt. Aber weil das Auffrischen nicht abgestellt werden darf – sonst sieht man den Dialog nicht – dauert die Ausführung viel länger. Deshalb kommt die Version 05d noch ohne aus.

Gruss, Hans


als Antwort auf: [#567260]

script seiten entfernen

gozreh
Beiträge gesamt: 9

1. Nov 2018, 09:18
Beitrag # 28 von 71
Beitrag ID: #567285
Bewertung:
(7095 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen lieben Dank, Hans


als Antwort auf: [#567278]

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

4. Nov 2018, 17:29
Beitrag # 29 von 71
Beitrag ID: #567341
Bewertung:
(7021 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Armin,

bitte sehr. Ich habe Dir soeben per PM die Version 06d zugestellt.

Jetzt mit einer Fortschritts-Anzeige, welche die Ausführung nicht verlängert.

Das Script erzeugt einen Ordner auf dem Schreibtisch und benennt ihn mit dem Ausgangswert der Seiten, welche abgeräumt werden müssen. Per Countdown ändert diese Zahl jedes Mal, wenn eine Seite weg ist.

Also:
– Script starten;
– Umschalten auf den Schreibtisch.

Seit Jahren benutze ich dazu die Option "Aktive Ecke" der "Mission Control": Den Mauszeiger in die Ecke oben rechts bewegen – alle Fenster werden ausgeblendet und der Schreibtisch ist sichtbar.

Jetzt kann man sehen, dass die ersten hundert Seiten relativ schnell fort sind. Aber dann verlangsamt sich die Ausführung. Siehe den angehängten Screen-shot ("Kurve.png").

Gruss, Hans


als Antwort auf: [#567285]
Anhang:
Kurve.png (72.5 KB)

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

4. Nov 2018, 18:11
Beitrag # 30 von 71
Beitrag ID: #567343
Bewertung:
(7007 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

nur mal so als Idee:

Wenn die Datenmenge für die Geschwindigkeit solch eine große Bedeutung hat, könnte man dann nicht die Datei temporär teilen und nach Ausführung der Arbeit wieder zusmmenfügen?

Ich habe allerdings keine Ahnung, wie groß der Aufwand dafür wäre.


als Antwort auf: [#567341]
X