Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » script seiten entfernen

script seiten entfernen

gozreh
Beiträge gesamt: 9

26. Okt 2018, 21:00
Bewertung:

gelesen: 10819

Beitrag als Lesezeichen
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?

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

27. Okt 2018, 08:42
Bewertung:

gelesen: 10747

Beitrag als Lesezeichen
Hallo gozreh,

herzlich willkommen im InDesign-Forum! :-)

Das Lösen Deiner Aufgabe sollte keinen grossen Aufwand erfordern.

Doch wünschenswert ist, nähere Angaben zu bekommen: Die Version von InDesign, Mac OS X oder Windows? Und – vor allem – ein Musterdokument: Sind es Doppelseiten? Wenn ja: behalten die nicht entfernten Seiten ihren Platz oder rutschen sie nach? Ist der Text alleine in einem Textrahmen? Und so weiter.

Also: Bitte ein Dokument zur Verfügung stellen.

Gruss, Hans

(Dieser Beitrag wurde von Hans Haesler am 27. Okt 2018, 08:52 geändert)

script seiten entfernen

gozreh
Beiträge gesamt: 9

27. Okt 2018, 10:43
Bewertung:

gelesen: 10724

Beitrag als Lesezeichen
Hallo Hans,
es sind Einzelseiten in Indesign CC am Mac.
Generell gibt es 2 Varianten der Rückseite eine Postkarte. Bei Personen bei denen ein Betrag XX,XX auf der Seite in der Textbox steht, soll die komplette Seite entfernt werden.

Ich habe mal das Dokument hochgeladen
https://we.tl/t-IjVKqkGytx

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

27. Okt 2018, 11:10
Bewertung:

gelesen: 10710

Beitrag als Lesezeichen
Hallo gozreh,

versuche es bitte mal mit diesem Script. Die gebrauchsfertige Datei ist unten angehängt.

Code
//SeitenEntfernen_01d.js 
//© 27.10.2018 / Hans Haesler, Châtelard 52, CH-1018 Lausanne
//DESCRIPTION:Markierte Seiten entfernen

// vorbeugenderweise das Anzeigen von Dialogen aktivieren
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

// testen, ob ein Dokument geöffnet ist
if (app.documents.length == 0) {
alert ("Es ist kein Dokument offen.", "Achtung");
exit();
}

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

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

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

// die Vorkommen finden und zählen
var allFound = curDoc.findText();
var nFound = allFound.length;
var namesArr = [];

// eine Schleife durch die Vorkommen und die Seitennamen auflisten
for (var n=0; n<nFound; n++) {
var curName = allFound[n].parentTextFrames[0].parentPage.name;
var isInArr = checkName(namesArr, curName);
if (!isInArr) {
namesArr.push(curName);
}
}

// den Array sortieren ...
namesArr.sort(numSort);
// ... umkehren ...
namesArr.reverse();
// ... und zählen
var nNames = namesArr.length;

// die Seiten entfernen
for (var p=0; p<nNames; p++) {
try {
curDoc.pages.itemByName(namesArr[p]).remove();
}
catch (e) {
}
}

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

// das Ende der Aktion verkünden
//alert ("Fertig.", "");
var dlog = new Window("palette");
dlog.size = [320,100];
dlog.add("statictext", [80, 100, 320, 116], "Fertig.");
dlog.show();
// eine kleine Pause
$.sleep(999);
// das Fenster schliessen
dlog.close();

// diese Funktion prüft, ob sich der Name schon im Array befindet
function checkName(namesArr, curName) {
for (var n=0; n<namesArr.length; n++) {
if (namesArr[n] == curName) {
return true;
}
}
return false;
}

// die Funktion, welche Zahlen-Strings sortiert
function numSort(a, b) {
return a - b;
}

Hier funktioniert es wie erwartet. Hoffe, es klappt bei Dir auch.

Gruss, Hans

Anhang:
SeitenEntfernen_01d.zip (1.11 KB)

script seiten entfernen

gozreh
Beiträge gesamt: 9

27. Okt 2018, 11:25
Bewertung:

gelesen: 10704

Beitrag als Lesezeichen
Hallo Hans,

wow! Es funktioniert. Vielen, vielen Dank für Deine Hilfe!

Gruß Armin

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

27. Okt 2018, 11:49
Bewertung:

gelesen: 10692

Beitrag als Lesezeichen
Hallo Armin,

bitte sehr. Super, dass es auf Anhieb klappte.

Wenn die Dokumente je nur zwei Seiten umfassen, dann macht das Script ein paar Aktionen umsonst. Ist aber nicht weiter schlimm.

Ich bin gerade unterwegs. Werde mich im Laufe des Nachmittags per PM bei Dir melden.

Gruss, Hans

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

28. Okt 2018, 20:55
Bewertung:

gelesen: 10602

Beitrag als Lesezeichen
Hallo Leute,

beim privaten Austausch mit Armin wurden meine Vermutungen bestätigt:
– Wenn die erste Seite nicht "XX,XX" enthält, sondern einen Euro-Betrag: Die zweite Seite entfernen.
– Das Dokument besteht aus mehr als zwei Seiten. Wieviel? Deren 600 !!!...

Als hiess es, das Script ergänzen. Eine gebrauchsfertige Datei ist unten angehängt.

Code
//SeitenEntfernen_02d.js 
//© 28.10.2018 / Hans Haesler, Châtelard 52, CH-1018 Lausanne
//DESCRIPTION:Markierte Seiten entfernen

// vorbeugenderweise das Anzeigen von Dialogen aktivieren
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

// testen, ob ein Dokument geöffnet ist
if (app.documents.length == 0) {
alert ("Es ist kein Dokument offen.", "Achtung");
exit();
}

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

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

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

// die Vorkommen finden und zählen
var allFound = curDoc.findText();
var nFound = allFound.length;
var namesArr = [];

// eine Schleife durch die Vorkommen und die Seitennamen auflisten
for (var n=0; n<nFound; n++) {
var curName = allFound[n].parentTextFrames[0].parentPage.name;
var isInArr = checkName(namesArr, curName);
if (!isInArr) {
namesArr.push(curName);
}
}

// den Array sortieren ...
namesArr.sort(numSort);
// ... umkehren ...
namesArr.reverse();
// ... und zählen
var nNames = namesArr.length;

// die Seiten entfernen
for (var p=0; p<nNames; p++) {
try {
curDoc.pages.itemByName(namesArr[p]).remove();
}
catch (e) {
}
}

// und nun die Seiten mit einem Betrag /////////////////////////////
// das Suchmuster vorbereiten
app.findGrepPreferences.findWhat = "[0-9]+,[0-9]{2}";

// die Vorkommen finden und zählen
var allFound = curDoc.findGrep();
var nFound = allFound.length;
var namesArr = [];

// eine Schleife durch die Vorkommen und die Seitennamen auflisten
for (var n=0; n<nFound; n++) {
var curName = allFound[n].parentTextFrames[0].parentPage.name;
var nxtName = ""+((curName*1)+1);
var isInArr = checkName(namesArr, nxtName);
if (!isInArr) {
namesArr.push(nxtName);
}
}

// den Array sortieren ...
namesArr.sort(numSort);
// ... umkehren ...
namesArr.reverse();
// ... und zählen
var nNames = namesArr.length;

// die Seiten entfernen
for (var p=0; p<nNames; p++) {
try {
curDoc.pages.itemByName(namesArr[p]).remove();
}
catch (e) {
}
}

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

////////////////////////////////////////////////////////////////////
// das Ende der Aktion verkünden
var dlog = new Window("palette");
dlog.size = [320,100];
dlog.add("statictext", [80, 100, 320, 116], "Fertig.");
dlog.show();
// eine kleine Pause
$.sleep(999);
// das Fenster schliessen
dlog.close();

////////////////////////////////////////////////////////////////////
// diese Funktion prüft, ob sich der Name schon im Array befindet
function checkName(namesArr, curName) {
for (var n=0; n<namesArr.length; n++) {
if (namesArr[n] == curName) {
return true;
}
}
return false;
}

////////////////////////////////////////////////////////////////////
// die Funktion, welche Zahlen-Strings sortiert
function numSort(a, b) {
return a - b;
}

Zuerst werden – wie gehabt – die Seiten entfernt, in welchen "XX,XX" enthalten ist.
Dann wird ein Grep-Suchstring definiert (und angewendet), mit welchem Beträge ab 0,01 gefunden werden. Nach oben unbegrenzt. Wieder werden die Seitenzahlen ermittelt. Aber jede wird um eins erhöht, weil die nächste Seite entfernt werden muss.

Gruss, Hans

(Dieser Beitrag wurde von Hans Haesler am 28. Okt 2018, 20:57 geändert)

Anhang:
SeitenEntfernen_02d.zip (1.23 KB)

script seiten entfernen

gozreh
Beiträge gesamt: 9

29. Okt 2018, 00:03
Bewertung:

gelesen: 10575

Beitrag als Lesezeichen
Hans hat ein prima Script geschrieben. Ich habe es gerade nochmal getestet. Das Ausgangsdokument hat 1719 Seiten !!!!
Lief bei mir in Indesign ca. 1 Stunde. Habe mich nicht von dem drehenden "Glücksrad" in Indesign verunsichern lassen, sondern habe einfach abgewartet.

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

29. Okt 2018, 08:59
Bewertung:

gelesen: 10514

Beitrag als Lesezeichen
Hallo Armin,

hast Du aber eine Ausdauer und eine Zuversicht! Ich hätte die Übung schon nach fünf Minuten abgebrochen und dem Hans geschrieben, dass sein Script nichts taugt ...

Um die Ausführung etwas zu beschleunigen, könnte das Script zu Beginn das Dokument schliessen und gleich wieder öffnen, aber unsichtbar. Wenn zusätzlich das Auffrischen der Bildschirmanzeige abgestellt und der Preflight deaktiviert wird, sollte die Ausführung spürbar schneller sein.

Ich werde zunächst ein Testdokument mit 99 Seiten erzeugen und dann das Script erweitern. Bis später.

Gruss, Hans

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

29. Okt 2018, 10:11
Bewertung:

gelesen: 10493

Beitrag als Lesezeichen
Hallo Armin,

Zwischenbericht:
Zusätzlich zu den schon genannten Massnahmen wird in der Version 03d darauf verzichtet, bei jedem Vorkommen zu prüfen, ob sich die aktuelle Seitenzahl schon im Array befindet.

Aktuelle Version 02d: Mit den 99 Seiten dauert die Ausführung knapp sechs Sekunden: 5.895

Erweiterte Version 03d: Die Meldung kommt nur eine knappe Sekunde früher: 5.003
Die erhoffte Halbierung ist es also bei weitem nicht ...

Doch sehr wahrscheinlich wird sich mit einer höheren Anzahl Seiten eine grössere Differenz ergeben. Zunächst werde ich ein Dokument mit 891 Seiten fabrizieren. Aber den Test kann ich erst nachmittags starten.

Gruss, Hans

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

29. Okt 2018, 10:27
Bewertung:

gelesen: 10485

Beitrag als Lesezeichen
Hallo Hans,

wie wäre es mit einem Progressbar, dann weiß der Anwender, dass das Skript etwas Sinnvolles macht.

Geht natürlich wieder etwas auf Kosten der Geschwindigkeit.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

29. Okt 2018, 10:42
Bewertung:

gelesen: 10475

Beitrag als Lesezeichen
Hallo Werner,

ja, daran habe ich auch schon gedacht. Aber erst nachdem der enorme Umfang des Dokuments bekannt wurde ...

Doch zunächst will ich – durch sukzessives Erhöhen der Anzahl Seiten – erforschen, was das unsichtbare Öffnen des Dokuments bringt.

Gruss, Hans

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

29. Okt 2018, 10:47
Bewertung:

gelesen: 10470

Beitrag als Lesezeichen
Hallo Hans,

Zitat Doch zunächst will ich – durch sukzessives Erhöhen der Anzahl Seiten – erforschen, was das unsichtbare Öffnen des Dokuments bringt.


Ich habe solch eine Funktion in der Hoffnung auf eine große Geschwindigkeitssteigerung in meinen Projektmanager eingebaut, aber das Ergebnis hat mich eher enttäuscht.

Ich wünsche Dir mehr Erfolg!

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

29. Okt 2018, 11:08
Bewertung:

gelesen: 10447

Beitrag als Lesezeichen
Hallo Werner,

danke für Deinen Wunsch. :-)

Ja, grosse Erwartungen habe ich auch nicht. Aus Erfahrung weiss ich aber, dass es doch etwas bringt.

Und manchmal hilft sogar das (manuelle) Schliessen eines Bedienfelds (z.B. Seiten oder Farbfelder).

Gruss, Hans

script seiten entfernen

Thomas Richard
Beiträge gesamt: 19334

29. Okt 2018, 12:48
Bewertung:

gelesen: 10400

Beitrag als Lesezeichen
Antwort auf: Und manchmal hilft sogar das (manuelle) Schliessen eines Bedienfelds (z.B. Seiten oder Farbfelder).

Gerade das Seitenbedienfeld würde ich hier als Problemkandiaten sehen, da es sich bei der Löscherei und evtl. bereits bei der Auswahl der betreffenden Kandidaten zu Tode aktualisiert.

Das übelste ist aber in der Regel das aktivierte Preflight, das bei jedem Eingriff meint, unverzüglich alles erneut prüfen zu müssen.


MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/

script seiten entfernen

Uwe Laubender
Beiträge gesamt: 5316

29. Okt 2018, 18:20
Bewertung:

gelesen: 7451

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
*****
Mit herzlichem Gruß,
Uwe Laubender

script seiten entfernen

gozreh
Beiträge gesamt: 9

29. Okt 2018, 18:31
Bewertung:

gelesen: 7447

Beitrag als Lesezeichen
Ja, ist also schon erledigt

script seiten entfernen

Uwe Laubender
Beiträge gesamt: 5316

29. Okt 2018, 18:33
Bewertung:

gelesen: 7445

Beitrag als Lesezeichen
Hm.
Also befinden sich auf den zu löschenden Seiten keine Textrahmen, die mit anderen Rahmen auf anderen Seiten verkettet sind?
*****
Mit herzlichem Gruß,
Uwe Laubender

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

gelesen: 7422

Beitrag als Lesezeichen
genau, es gibt keine Verketteten Texte, nur Personalisierungen die ich über Datenzusammenführung erstellt habe

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

30. Okt 2018, 16:20
Bewertung:

gelesen: 7349

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

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

30. Okt 2018, 18:21
Bewertung:

gelesen: 7326

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

script seiten entfernen

gozreh
Beiträge gesamt: 9

30. Okt 2018, 19:51
Bewertung:

gelesen: 7312

Beitrag als Lesezeichen
Du bist der Hammer. Wahnsinn! Danke nochmals

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

30. Okt 2018, 20:27
Bewertung:

gelesen: 7301

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

script seiten entfernen

Uwe Laubender
Beiträge gesamt: 5316

31. Okt 2018, 11:18
Bewertung:

gelesen: 7202

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;

};

}() )

*****
Mit herzlichem Gruß,
Uwe Laubender

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

31. Okt 2018, 11:31
Bewertung:

gelesen: 7193

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

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

31. Okt 2018, 17:39
Bewertung:

gelesen: 7144

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

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

31. Okt 2018, 17:40
Bewertung:

gelesen: 7144

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

script seiten entfernen

gozreh
Beiträge gesamt: 9

1. Nov 2018, 09:18
Bewertung:

gelesen: 7094

Beitrag als Lesezeichen
Vielen lieben Dank, Hans

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

4. Nov 2018, 17:29
Bewertung:

gelesen: 7020

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

Anhang:
Kurve.png (72.5 KB)

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

4. Nov 2018, 18:11
Bewertung:

gelesen: 7006

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.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

4. Nov 2018, 18:46
Bewertung:

gelesen: 7608

Beitrag als Lesezeichen
Hallo Werner,

Du hälst mich aber auf Trab! :-)

Aber es ist eine gute Idee. Ich werde "mal" (d.h. aufwendig ;-) prüfen, ob das ...
– erstens möglich ist;
– und zweitens sich lohnt.

Gruss, Hans

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

4. Nov 2018, 19:02
Bewertung:

gelesen: 7602

Beitrag als Lesezeichen
Hallo Hans,

dann habe ich inzwischen vielleicht noch eine bessere Idee. :-)

Vorweg:
Ich habe mir Dein Skript nicht angesehen, weiß also nicht, ob man so die Seiten löschen kann:

1. die entsprechenden Seiten suchen, als Ergebnis müsste es doch ein Array geben, oder?
2. das Array mit einem Zusatzfeld Indexnummer versehen.
3. das Array nach Trefferseite (enthält XXX) sortieren, Trefferseiten nach hinten,
4. Trefferelemente löschen.
5. Array nach Indexfeld sortieren -> absteigend
6. Neue Datei erzeugen und mit Hilfe des Arrays die Parentpages der Arrayelemente nacheinander in das neue Dokument duplizieren.

So, das war mehr eine logische Spielerei, aber zeitlich müsste diese Lösung, wenn sie denn überhaupt funktioniert, das schnellste Ergebnis liefern, weil es nur geringe Datenbewegungen gibt.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

4. Nov 2018, 19:34
Bewertung:

gelesen: 7588

Beitrag als Lesezeichen
Hallo Werner,

okay ... bessere Ideen sind immer willkommen! :-)
Ich werde versuchen, Deine Outline umzusetzen.

Gruss, Hans

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

5. Nov 2018, 09:38
Bewertung:

gelesen: 7509

Beitrag als Lesezeichen
Hallo Werner,

okay ... als Erstes habe ich das 1719-Seiten-Dokument, das bestehende Script "DokumentAufsplitten" gestartet, die Option "Anzahl Teildokumente" gewählt und im nächsten Dialog eine 3 eingetippt.

Schon bald wurde klar, dass das viel zu lange dauern wird. Es müssen ja drei Dokumente erzeugt werden und bei jedem müssen 1146 Seiten entfernt werden. Nach gut zwanzig Minuten war das erste Dokument im Finder sichtbar. Nach einer halben Stunde Abbruch der Übung.

*****
Neuer Versuch: Das Dokument zwei Mal duplizieren und die drei Dokumente umbenennen. Das erste öffnen, im Seiten-Bedienfeld die 1146 Seiten auswählen, die alt-Taste niederhalten und auf das Papierkorb-Symbol klicken. Die Seiten werden entfernt. Aber das braucht auch eine geraume Zeit. Für die drei Dokument insgesamt siebzehn Minuten.

Dann InDesign beenden und neu starten, damit das endgültige Entfernen der Seiten schneller erfolgt (15 Sekunden pro Dokument).
Nach fast zwei Minuten das Dokument speichern und schliessen. Aber dieser Vorgang dauert wieder eine Minute.
Noch zwei Mal dasselbe.

*****
Fazit: 1 + 17 + 1 + 3 + 3 + 3 = 28 Minuten. Vier Minuten mehr als mit dem bisherigen Script. Und umständlicher.

*****
Die zweite Anregung, die Seiten in ein neues Dokument zu kopieren habe ich noch nicht umzusetzen versucht.

Das Dokument setzt sich ja aus drei Sorten von Seiten zusammen: Vorderseite, erste Rückseite, zweite Rückseite; Vorderseite, erste Rückseite, zweite Rückseite; usw. Insgesamt 573 mal drei.

Die Vorderseiten enthalten Bild und Text; von den Rückseiten muss immer eine entfernt werden, je nach Zustand des Euro-Betrages. Wenn "XX,XX" muss die erste Rückseite entfernt werden. Wenn Zahlen gefunden werden, muss die zweite Rückseite weg.

Also recht umständlich. Wenn nun die 1146 Seiten einzeln ins neue Dokument geschaufelt werden müssen, wird die Ausführung vermutlich nicht schneller sein.

Gruss, Hans

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

5. Nov 2018, 10:23
Bewertung:

gelesen: 7495

Beitrag als Lesezeichen
Guten Morgen Hans,

da warst Du ja fleißig.

Antwort auf: Schon bald wurde klar, dass das viel zu lange dauern wird. Es müssen ja drei Dokumente erzeugt werden und bei jedem müssen 1146 Seiten entfernt werden. Nach gut zwanzig Minuten war das erste Dokument im Finder sichtbar. Nach einer halben Stunde Abbruch der Übung.


Ok, da war wohl noch der Ventura bei mir im Kopf -> Dokument als Vorlage öffnen, ergab eine neue Publikation ohne Seiten.
Das könnte man eventuell durch neue Datei mit Übernahme aller Einstellungen ersetzen.
Ginge das? und wie lange dauert das?
Wo ich ein Problem sehe, ist die erste Seite, die InDesign zwingend verlangt, gibt es eine Funktion, die eine Seite durch eine andere ersetzt?
Wenn nicht, müsste man die erste Seite nach Duplizierung der ersten Seite löschen.
Antwort auf: Neuer Versuch: Das Dokument zwei Mal duplizieren und die drei Dokumente umbenennen. Das erste öffnen, im Seiten-Bedienfeld die 1146 Seiten auswählen, die alt-Taste niederhalten und auf das Papierkorb-Symbol klicken. Die Seiten werden entfernt. Aber das braucht auch eine geraume Zeit. Für die drei Dokument insgesamt siebzehn Minuten.


Ok, aber wäre es nicht besser, nur ein Dokument zu duplizieren, es zu öffnen, speichern unter neuem Namen, die Seiten zu löschen, speichern unter neuem Namen und anschließen das neue Dokument zweimal zu kopieren (File.copy!)?.
Das InDesign-Dokument muss dafür nicht geschlossen werden!
Antwort auf: Die zweite Anregung, die Seiten in ein neues Dokument zu kopieren habe ich noch nicht umzusetzen versucht.


Ok, warum ich das vorgeschlagen habe?
Löschen bedeutet intensive Speicherbewegungen, wie groß ist eigentlich die Datei nach dem Löschen der Seiten?
Im schlimmsten Fall größer als vorher, deshalb auf jeden Fall "Speichern unter..."
Beim Duplizieren der Seiten in ein neues Dokument sollten die Speicheranforderungen linear sein und es sollte keinerlei Speicherverschiebungen geben.
Deshalb mein Vorschlag, die benötigten Seiten von vorne nach hinten zu kopieren.
Antwort auf: Die Vorderseiten enthalten Bild und Text; von den Rückseiten muss immer eine entfernt werden, je nach Zustand des Euro-Betrages. Wenn "XX,XX" muss die erste Rückseite entfernt werden. Wenn Zahlen gefunden werden, muss die zweite Rückseite weg.


Also, ich habe das so verstanden, dass alle Seiten mit XX,XX entfernt werden müssen, oder anders ausgedrückt, es müssen nur die Seiten ohne XX.XX dupliziert werden.
Habe ich da etwas falsch verstanden?
Wenn nicht, müssen also nur 2/3 der Seiten kopiert werden.

Sorry, ich habe noch etwas vergessen:

Falls sich die Aufgabe regelmäßig wiederholt und sich die Einstellungen nicht ändern, muss man die leere Datei nur einmal als Vorlage erzeugen.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

(Dieser Beitrag wurde von WernerPerplies am 5. Nov 2018, 10:25 geändert)

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

5. Nov 2018, 11:33
Bewertung:

gelesen: 7466

Beitrag als Lesezeichen
Hallo Werner,

weisst Du was? Die einfachste Lösung wäre: Der Armin produziert Ausgangsdokumente, welche nicht mehr als 600 Seiten umfassen.
Dann ist die Aufgabe in zwei Minuten (pro Dokument) erledigt.

*****
Das Dokument setzt sich aus vielen (= 573) Folgen von drei Seiten zusammen. Die ersten Seiten sind die Vorderseiten, welche erhalten bleiben.

Auf allen zweiten Seiten enthält derselbe Textrahmen entweder "XX,XX" oder einen Euro-Betrag (z.B."72,48").

Das aktuelle Script macht eine Textsuche mit "XX,XX". Von den gefundenen Objekten wird über den Textrahmen die 'parentPage' festgestellt und deren 'documentOffset'. Und ja, alle Seiten mit "XX,XX" müssen gelöscht werden.

Um die Euro-Beträge zu finden, macht das Script eine GREP-Suche mit "[0-9]+,[0-9]{2}". Wieder wird die 'parentPage' festgestellt. Aber diese darf nicht entfernt werden, sondern die darauffolgende Seite.

Bis zu einer gewissen Anzahl Seiten wird das ziemlich rasch erledigt. Aber mit den 1719 Seiten dauert es doch ziemlich länger.

*****
Deshalb, Armin: Zu Beginn lieber drei Dokumente mit weniger Umfang herstellen, als ein riesiges.

Gruss, Hans

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

5. Nov 2018, 11:50
Bewertung:

gelesen: 7460

Beitrag als Lesezeichen
Hallo Hans,

Antwort auf: weisst Du was? Die einfachste Lösung wäre: Der Armin produziert Ausgangsdokumente, welche nicht mehr als 600 Seiten umfassen.


Ich frage mich so und so, wie dieses Dokument entsteht, und ob es nicht leichter wäre, gleich das fertige Produkt zu produzieren.
Aber Du hast mich angefixt! :-)
Könntest Du mir Deine Testdatei und die Ergebnisdatei zur Verfügung stellen?

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

5. Nov 2018, 12:06
Bewertung:

gelesen: 7451

Beitrag als Lesezeichen
Hallo Hans,

vielleicht braucht Armin auch nicht die InDesign-Datei, sondern den PDF-Output, dann müsste gar nichts gelöscht werden, sondern nur der Exportbefehl generiert werden.

Nichts ist unmöglich!

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

5. Nov 2018, 12:35
Bewertung:

gelesen: 7434

Beitrag als Lesezeichen
Hallo Werner,

also ... ich glaube nicht, dass Dir das 1719-Seiten-Trumm (= 303.3 MB) für Dein Vorhaben nützlich wäre.

Wenn schon direkt richtig produzieren, dann eher anstelle der Datenzusammenführung ein Script verwenden.
Am besten nimmst Du per PM Verbindung mit Armin auf.

*****
Eine Outline, ohne zu wissen was zur Verfügung steht:
– Ein Dokument ist vorbereitet, welches als einzige Seite die Vorderseite der Antwortkarte enthält (Musterseite "A").
– Die Rückseiten sind als Musterseiten "B" und "C" vorhanden.
– Ein Script liest eine CSV-Datei ein.
– Je nach Umfang werden Seiten eingefügt, welche provisorisch auf der Musterseite "A" basieren.
– Eine Schleife durch die CSV.
– Wenn der Betrag "XX,XX" ist, wird der aktuellen Seite die Musterseite "C" zugewiesen (= zweite Rückseite).
– Der Rahmen "Adresse" wird gelöst und die Adresse der Kundin eingefügt.
– Wenn der Betrag in Ziffern ist, wird die Musterseite "B" zugewiesen.
– Die Rahmen werden gelöst und der Betrag, der Name der Kundin und die Adresse werden eingefügt.
– usw. usf.

Gruss, Hans

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

5. Nov 2018, 12:42
Bewertung:

gelesen: 7429

Beitrag als Lesezeichen
Hallo Hans,

Antwort auf: also ... ich glaube nicht, dass Dir das 1719-Seiten-Trumm (= 303.3 MB) für Dein Vorhaben nützlich wäre.


Doch, ich denke schon, weil dann das Ergebnis mit Deinen Zeiten in etwa vergleichbar wäre, aber Du hast recht, eine IDML-Datei mit 303,MB wäre schon heftig!
Oder ist es eine InDesign-Datei? Die kann man doch kräftig schrumpfen.
Antwort auf: Am besten nimmst Du per PM Verbindung mit Armin auf.


Na ja, mich interessiert im Moment mehr, ob mein Ansatz stimmt.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

5. Nov 2018, 13:19
Bewertung:

gelesen: 7411

Beitrag als Lesezeichen
Hallo Werner,

ja, das ist eine InDesign-Datei. Gezippt bleiben von den 303.3 MB noch 43.4 MB.
Als ".idml" exportiert sind es 61.5 MB; gezippt 59.8 MB.

Aber ohne Einverständnis von Armin kann ich die nicht einfach so weitergeben.
Also: Armin kontaktieren. Der kann Dir dann eventuell das Original zustellen.

Gruss, Hans

script seiten entfernen

Uwe Laubender
Beiträge gesamt: 5316

5. Nov 2018, 23:37
Bewertung:

gelesen: 7342

Beitrag als Lesezeichen
Hallo zusammen,
falls das Ziel, Seiten zu löschen, sein sollte, eine PDF-Datei aus der reduzierten InDesign-Datei zu schreiben, könnte man einen noch sehr viel schnelleren Weg beschreiten.

Die "guten" Seiten merken, einen großen String mit Seitenzahlen schreiben, kommagetrennt, und den dann für die PDF-Ausgabe benutzen. Das ist dann eine Sache von Sekunden, diesen Gesamtstring dem Export zu überantworten.

Hier ein Beispiel:

Code
( function() 
{

app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL;

writePageRangeForExport()

function writePageRangeForExport()
{

app.findTextPreferences.findWhat = "XX,XX";

var doc = app.activeDocument;
var docPagesLength = doc.documentPreferences.pagesPerDocument;
var contentList = doc.findText();

app.findTextPreferences = NothingEnum.nothing;

var docOffsetNumbers = [];
var exportStringArray = [];

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

var docOffsetString = parentPage.documentOffset.toString();

docOffsetNumbers[ docOffsetString ] = parentPage.id;
};

for( var n=0; n<docPagesLength; n++ )
{
if( n.toString() in docOffsetNumbers ){ continue };
exportStringArray[exportStringArray.length++] = "+"+( n+1 );
}

app.pdfExportPreferences.pageRange = exportStringArray.join(",");

};

}() )


EDIT: Merke gerade, dass dann doScript() nichts nützt, um die Eintragung in den pageRange rückgängig zu machen. Den Code sollte man dann also ohne doScript ausführen. Habe das noch geändert. Zusätzlich noch einen Variablennamen geändert.
*****
Mit herzlichem Gruß,
Uwe Laubender

(Dieser Beitrag wurde von Uwe Laubender am 5. Nov 2018, 23:47 geändert)

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

6. Nov 2018, 06:27
Bewertung:

gelesen: 7263

Beitrag als Lesezeichen
Moin Hans,

danke, ich dachte, dass Du die Datei per Script generiert hast.

Dann wäre es mit den Daten kein Problem gewesen.

Ich werde das nachher mal selber machen. Die relativen Zeiten der verschiedenen Lösungsmethoden müssten ja eigentlich aussagekräftig genug sein.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

6. Nov 2018, 06:35
Bewertung:

gelesen: 7260

Beitrag als Lesezeichen
Moin Uwe,

ja wenn man wüsste was das eigentliche Ziel der Aufgabe war.

Zwei Seelen ein Gedanke! Danke, dass Du die Idee "PDF-Lösung" gleich in ein Skript umgesetzt hast :-)

Meine Zielsetzung ist inzwischen eine Andere.

Ich will wissen, wie sich meine angedachten Lösungen vom Zeitbedarf her verhaltenn.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

6. Nov 2018, 08:12
Bewertung:

gelesen: 7230

Beitrag als Lesezeichen
Moin Werner,

ursprünglich hat mir Armin ein 21-Seiten-Dokument zugestellt. Aus diesem habe ich zunächst ein 99-Seiten-Dokument gemacht. Und die ersten Tests.

Danach habe ich das Dokument manuell dupliziert und per Script zusammenfügen lassen. Zu 198 Seiten und 297 und 396 und 594 und 891 ...

Je nach Anzahl Seiten gab es andere Erkenntnisse (Bedienfeld Seiten geöffnet oder geschlossen, Preflight usw.)

Schliesslich kopierte ich das grosse Dokument und setzte es per Script zu einem 1782-Seiten-Dokument zusammen und entfernte 63 Seiten. Somit hatte ich dieselbe Anzahl Seiten (= 1719) wie Armin.

Gruss, Hans

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

6. Nov 2018, 08:35
Bewertung:

gelesen: 6816

Beitrag als Lesezeichen
Moin Uwe,

gute Idee.

Aber das Ergebnis ist nicht ganz korrekt:
– Seiten mit einem Euro-Betrag sind im 'exportStringArray'. So far, so good.
– Doch die darauffolgende Seite ist eine "schlechte" Seite und sollte nicht aufgelistet sein.

Gruss, Hans

script seiten entfernen

Uwe Laubender
Beiträge gesamt: 5316

6. Nov 2018, 09:55
Bewertung:

gelesen: 6800

Beitrag als Lesezeichen
Hallo Hans,
die zweite Bedingung lässt sich ja leicht korrigieren.

Was die Geschwindigkeit beim Löschen der Seiten angeht:
Könnte eine Zwischenspeicherung mit "Save As" in der Schleife, die die Seiten löscht, vielleicht helfen? Alle 50 oder 100 Löschvorgänge vielleicht?
*****
Mit herzlichem Gruß,
Uwe Laubender

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

6. Nov 2018, 10:03
Bewertung:

gelesen: 6794

Beitrag als Lesezeichen
Hallo Uwe,

Antwort auf: die zweite Bedingung lässt sich ja leicht korrigieren.

Leicht? Sooo leicht ist das nicht. Oder?

Ich werde gelegentlich einen "save as"-Versuch machen.

Aber wir sollten schon wissen, ob Armin die InDesign-Datei abliefern muss oder PDF-Dateien.

Gruss, Hans

script seiten entfernen

Uwe Laubender
Beiträge gesamt: 5316

6. Nov 2018, 10:38
Bewertung:

gelesen: 6780

Beitrag als Lesezeichen
Antwort auf [ Hans ] Hallo Uwe,

Antwort auf [ Uwe ] die zweite Bedingung lässt sich ja leicht korrigieren.

Leicht? Sooo leicht ist das nicht. Oder?…


Doch.

Siehe hier, jetzt mal ohne Prüfung, ob die folgende Seite vorhanden ist:

Code
( function() 
{

app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL;

getPageRangeForExport()

function getPageRangeForExport()
{

app.findTextPreferences.findWhat = "XX,XX";

var doc = app.activeDocument;
var docPagesLength = doc.documentPreferences.pagesPerDocument;
var contentList = doc.findText();

app.findTextPreferences = NothingEnum.nothing;

var docOffsetNumbers = [];
var exportStringArray = [];

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

var docOffsetString = parentPage.documentOffset.toString();
var docOffsetStringFollowingPage = ( parentPage.documentOffset + 1 ).toString();

docOffsetNumbers[ docOffsetString ] = parentPage.id;
docOffsetNumbers[ docOffsetStringFollowingPage ] = doc.pages[docOffsetStringFollowingPage].id;
};

for( var n=0; n<docPagesLength; n++ )
{
if( n.toString() in docOffsetNumbers ){ continue };
exportStringArray[exportStringArray.length++] = "+"+( n+1 );
}

app.pdfExportPreferences.pageRange = exportStringArray.join(",");

};

}() )

*****
Mit herzlichem Gruß,
Uwe Laubender

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

6. Nov 2018, 11:05
Bewertung:

gelesen: 6768

Beitrag als Lesezeichen
Hallo Uwe,

nein, so klappt es auch nicht.

Mit dem 21-Seiten-Dokument von Armin ergibt das als 'pageRange' nur elf Seiten:
[+1,+4,+7,+10,+13,+14,+15,+16,+17,+18,+19]

Es sollten aber vierzehn Seiten sein:
[+1,+3,+4,+6,+7,+9,+10,+12,+13,+14,+16,+17,+19,+21]

Gruss, Hans

script seiten entfernen

Uwe Laubender
Beiträge gesamt: 5316

6. Nov 2018, 11:14
Bewertung:

gelesen: 6775

Beitrag als Lesezeichen
Hallo Hans,
dann habe ich die zweite Bedingung noch nicht verstanden.

Falls beispielsweise Seite 2 den Ausdruck XX,XX enthält, soll also nicht die nächste Seite mitgelöscht werden?

Bitte um Aufklärung.
*****
Mit herzlichem Gruß,
Uwe Laubender

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

6. Nov 2018, 11:22
Bewertung:

gelesen: 6769

Beitrag als Lesezeichen
Hallo Uwe,

das Dokument setzt sich aus vielen (= 573) Folgen von drei Seiten zusammen. Die ersten Seiten sind die Vorderseiten, welche erhalten bleiben.

Auf allen zweiten Seiten enthält derselbe Textrahmen entweder "XX,XX" oder einen Euro-Betrag (z.B."72,48").

Ist es "XX,XX", dann muss diese Seite weg. Bei einem Euro-Betrag muss die nachfolgende Seite entfernt werden.

Gruss, Hans

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

6. Nov 2018, 11:50
Bewertung:

gelesen: 6753

Beitrag als Lesezeichen
Hans,

hier wäre es sicherlich hilfreich, die Preisfelder, unabhängig davon, ob ein Preis oder XX,XX drinsteht mit einem einheitlichen Zeichenformat zu versehen, das würde m. E. nach die Aufgabe stark vereinfachen.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

script seiten entfernen

Uwe Laubender
Beiträge gesamt: 5316

6. Nov 2018, 13:15
Bewertung:

gelesen: 6731

Beitrag als Lesezeichen
Antwort auf: Hallo Uwe,

nein, so klappt es auch nicht.

Mit dem 21-Seiten-Dokument von Armin ergibt das als 'pageRange' nur elf Seiten:
[+1,+4,+7,+10,+13,+14,+15,+16,+17,+18,+19]

Es sollten aber vierzehn Seiten sein:
[+1,+3,+4,+6,+7,+9,+10,+12,+13,+14,+16,+17,+19,+21]

Gruss, Hans


Hallo Hans,
jetzt ist's mir klar.

Ich würde meinen, dass der exportString für ein ca. 2000-Seiten-Dokument mit der erweiterten Anforderung in unter einer Minute fertiggestellt ist:

Code
( function() 
{

app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL;

getPageRangeForExport()

function getPageRangeForExport()
{

app.findGrepPreferences = app.changeGrepPreferences = null;
app.findTextPreferences = app.changeTextPreferences = null;

app.findTextPreferences.findWhat = "XX,XX";
app.findGrepPreferences.findWhat = "[0-9]+,[0-9]{2}";

var doc = app.activeDocument;
var docPagesLength = doc.documentPreferences.pagesPerDocument;

var textFindResults = doc.findText();
var textFindResultsLength = textFindResults.length;

var grepFindResults = doc.findGrep();
var grepFindResultsLength = grepFindResults.length;

var docOffsetNumbers = [];
var exportStringArray = [];

// Looping the findText results:
for(var n=0; n<textFindResultsLength; n++)
{
var parentPage = textFindResults[n].parentTextFrames[0].parentPage;
if( parentPage == null ){ continue };

var docOffsetString = parentPage.documentOffset.toString();
docOffsetNumbers[ docOffsetString ] = docOffsetString; // The contents is not important.
};

// Looping the findGrep results:
for(var n=0; n<grepFindResultsLength; n++)
{
var parentPage = grepFindResults[n].parentTextFrames[0].parentPage;
if( parentPage == null ){ continue };

// We want to dismiss the next page:
var docOffsetString = ( parentPage.documentOffset+1 ).toString();
docOffsetNumbers[ docOffsetString ] = docOffsetString; // The contents is not important.
};


// Building the exportStringArray:
for( var n=0; n<docPagesLength; n++ )
{
if( n.toString() in docOffsetNumbers ){ continue };
exportStringArray[exportStringArray.length++] = "+"+( n+1 );
};

app.pdfExportPreferences.pageRange = exportStringArray.join(",");

// $.writeln( exportStringArray.join(",") );

app.findGrepPreferences = app.changeGrepPreferences = null;
app.findTextPreferences = app.changeTextPreferences = null;

};

}() )

*****
Mit herzlichem Gruß,
Uwe Laubender

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

6. Nov 2018, 13:41
Bewertung:

gelesen: 6722

Beitrag als Lesezeichen
Hallo Uwe,

ja, jetzt ist das Ergebnis richtig. Für die 21 Seiten werden die korrekten "guten" Seiten aufgelistet.

Mit dem 1719-Seiten-Dokument dauerte die erste Ausführung 23 Sekunden.
Bei nächsten Mal nur noch sechs. Und bei weiteren Starts nur noch viereinhalb ...

Die Anzahl Elemente des Arrays ist richtig: 1146.

Und jetzt sollte sich nur noch der Armin melden.

Gruss, Hans

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

6. Nov 2018, 19:44
Bewertung:

gelesen: 6669

Beitrag als Lesezeichen
Hallo Hans,

um noch einmal auf das Thema "Seiten entfernen" zurückzukommen, ich habe jetzt mit den oben genannten unterschiedlichen Methoden eine Reihe von Versuchen gemacht.

Das Ergebnis ist eindeutig:

Im Rahmen des zur Verfügung stehenden Speichers ist das direkte Löschen von Seiten die schnellste Methode.

Ab einer großen Zahl von Seiten gewinnt das Duplizieren von Seiten in eine neue Datei.

Die Anzahl der Seiten hängt sicherlich von der Komplexität der Dateien ab.

Einige Beispielwerte mit einfacher Datenstruktur und virtuellem Window- 10-Pro-Rechner:

Code
300 Seiten: 
benötigte Verarbeitungszeit - Seiten erstellen: Stunden:
18 Sekunden,
394 Millisekunden

benötigte Verarbeitungszeit - jede 3. Seite löschen:
21 Sekunden,
597 Millisekunden

benötigte Verarbeitungszeit - 202 Seiten in eine neues Dokument kopiert:
31 Sekunden,
572 Millisekunden

1200 Seiten:
benötigte Verarbeitungszeit - Seiten erstellen: Stunden:
2 Minuten,
28 Sekunden,
328 Millisekunden

benötigte Verarbeitungszeit - jede 3. Seite löschen:
5 Minuten,
0 Sekunden,
760 Millisekunden

benötigte Verarbeitungszeit - 802 Seiten in eine neues Dokument kopiert:
4 Minuten,
42 Sekunden,
751 Millisekunden

2100 Seiten:
benötigte Verarbeitungszeit - Seiten erstellen: Stunden:
7 Minuten,
9 Sekunden,
817 Millisekunden

benötigte Verarbeitungszeit - jede 3. Seite löschen:
29 Minuten,
18 Sekunden,
146 Millisekunden

benötigte Verarbeitungszeit - 1402 Seiten in eine neues Dokument kopiert:
14 Minuten,
18 Sekunden,
518 Millisekunden


Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

6. Nov 2018, 23:13
Bewertung:

gelesen: 6619

Beitrag als Lesezeichen
Hallo Werner,

danke für Deine Versuche und das Posten der Ergebnisse.

Aber hier geht es ja um ein spezielles Dokument. Deshalb sollten die Testläufe schon mit der Original-Datei von Armin vorgenommen werden.
Um herauszufinden, ob die 23 Minuten des Seitenentfernens ebenfalls halbiert werden kann.

Und wir wissen immer noch nicht, was Armin abliefern muss (InDesign- oder PDF-Datei).

Gruss, Hans

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

7. Nov 2018, 06:40
Bewertung:

gelesen: 6576

Beitrag als Lesezeichen
Moin Hans,

Antwort auf: Aber hier geht es ja um ein spezielles Dokument. Deshalb sollten die Testläufe schon mit der Original-Datei von Armin vorgenommen werden.


Mag sein, aber mir ging es um die von mir vorgeschlagene Technik.

Aber wenn Dich das Ergebnis mit den von Dir verwendeten Daten interessiert, stelle ich Dir gerne mein Skript als Vorlage zur Verfügung.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

7. Nov 2018, 08:17
Bewertung:

gelesen: 6559

Beitrag als Lesezeichen
Moin Werner,

Antwort auf: (...) stelle ich Dir gerne mein Skript als Vorlage zur Verfügung.

Ja, gerne. Allerdings bin ich momentan auf einer anderen Baustelle.
Und ich habe auch noch nicht getestet, ob das von Uwe vorgeschlagene Speichern-unter etwas bringt.

Gruss, Hans

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

7. Nov 2018, 08:40
Bewertung:

gelesen: 6537

Beitrag als Lesezeichen
Hallo Hans,

ok, ich schicke Dir einen Link per private mail.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

script seiten entfernen

gozreh
Beiträge gesamt: 9

7. Nov 2018, 20:56
Bewertung:

gelesen: 8483

Beitrag als Lesezeichen
Generell muss ich meine Druckdaten als pdf-Datei abliefern. Aber mir ist es lieber, wenn die Seitenentfernung in Indesign stattfinden kann, damit ich das Dokument vorher nochmals prüfen kann.

script seiten entfernen

Uwe Laubender
Beiträge gesamt: 5316

8. Nov 2018, 08:44
Bewertung:

gelesen: 8415

Beitrag als Lesezeichen
Hallo Armin,
das Skript könnte die nicht zu exportierenden Seiten im Seiten-Bedienfeld mit einer Farbe versehen. Der zeitliche Aufwand wäre minimal. Die Gesamtzeit würde unter einer Minute liegen.

Unten ein Beispiel mit UIColors.BRICK_RED als Farbe für die Seiten, die nicht exportiert werden.
Die Liste der verfügbare Farben in der Klasse der UIColors gibt's hier:

http://jongware.mit.edu/...6js/pe_UIColors.html

Code
/** 
* @@@BUILDINFO@@@ GetPageRangeForExport-ColorPagesWthNoExport-NoPagesWith-XXX.jsx !Version! Thu Nov 08 2018 08:36:53 GMT+0100
*/

( function()
{

app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL;

getPageRangeForExport()

function getPageRangeForExport()
{

app.findGrepPreferences = app.changeGrepPreferences = null;
app.findTextPreferences = app.changeTextPreferences = null;

app.findTextPreferences.findWhat = "XX,XX";
app.findGrepPreferences.findWhat = "[0-9]+,[0-9]{2}";

// Color for the pages that will not be exported:
var noExportPageColor = UIColors.BRICK_RED;

var doc = app.activeDocument;
var docPagesLength = doc.documentPreferences.pagesPerDocument;

var textFindResults = doc.findText();
var textFindResultsLength = textFindResults.length;

var grepFindResults = doc.findGrep();
var grepFindResultsLength = grepFindResults.length;

var docOffsetNumbers = [];
var exportStringArray = [];

// Looping the findText results:
for(var n=0; n<textFindResultsLength; n++)
{
var parentPage = textFindResults[n].parentTextFrames[0].parentPage;
if( parentPage == null ){ continue };

parentPage.pageColor = noExportPageColor;

var docOffsetString = parentPage.documentOffset.toString();
docOffsetNumbers[ docOffsetString ] = docOffsetString; // The contents is not important.
};

// Looping the findGrep results:
for(var n=0; n<grepFindResultsLength; n++)
{
var parentPage = grepFindResults[n].parentTextFrames[0].parentPage;
if( parentPage == null ){ continue };

var nextPage = doc.pages[ parentPage.documentOffset+1 ];
nextPage.pageColor = noExportPageColor;

// We want to dismiss the next page:
var docOffsetString = ( nextPage.documentOffset ).toString();
docOffsetNumbers[ docOffsetString ] = docOffsetString; // The contents is not important.
};


// Building the exportStringArray:
for( var n=0; n<docPagesLength; n++ )
{
if( n.toString() in docOffsetNumbers ){ continue };
exportStringArray[exportStringArray.length++] = "+"+( n+1 );
};

app.pdfExportPreferences.pageRange = exportStringArray.join(",");

// $.writeln( exportStringArray.join(",") );

app.findGrepPreferences = app.changeGrepPreferences = null;
app.findTextPreferences = app.changeTextPreferences = null;

};

}() )

*****
Mit herzlichem Gruß,
Uwe Laubender

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

10. Nov 2018, 10:50
Bewertung:

gelesen: 8373

Beitrag als Lesezeichen
Hallo Uwe,

Dein Vorschlag funktioniert. Das Zuweisen der Farbe an 573 Seiten (von insgesamt 1719) und das Erstellen des Strings für den PDF-Export dauert 01'47".

Aber: Das Überprüfen des Dokuments wird zu mühsam sein.

Deshalb könnte meine brilliante (gar nicht bescheiden :-) Idee umgesetzt werden: Das Einfärben der Seiten durch das Entfernen aller Objekte ersetzen ...

Code
parentPage.pageItems.everyItem().remove(); 

... und ...
Code
nextPage.pageItems.everyItem().remove(); 

Dann sind die "schlechten" Seiten alle weiss. Das dauert 4'11"

Zum Beschleunigen kann der Preflight abgestellt, das Dokument geschlossen und unsichtbar geöffnet werden. Nach der Behandlung wird es wieder sichtbar gemacht. Dauer: 1'04"

*****
Deine Idee mit dem Zwischenspeichern (im Beitrag #47) habe ich ausprobiert. Bringt leider nichts.

*****
Voranzeige: Der Vorschlag von Werner (Kopieren in ein anderes Dokument) ergibt tatsächlich eine markante Beschleunigung. Näheres folgt heute Nachmittag.

Gruss, Hans

script seiten entfernen

Uwe Laubender
Beiträge gesamt: 5316

10. Nov 2018, 14:13
Bewertung:

gelesen: 8350

Beitrag als Lesezeichen
Lieber Hans,
das Entfernen der Objekte ist wirklich eine geniale Idee.
Das meine ich jetzt ohne jegliche Ironie!

Denn:
Bei der PDF-Ausgabe kannst Du entscheiden, dass leere Seiten nicht mit ausgegeben werden. Das würde das Löschen der Seiten überflüssig machen.
*****
Mit herzlichem Gruß,
Uwe Laubender

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

10. Nov 2018, 15:00
Bewertung:

gelesen: 8339

Beitrag als Lesezeichen
Hallo Uwe,

Antwort auf: Bei der PDF-Ausgabe kannst Du entscheiden, dass leere Seiten nicht mit ausgegeben werden.

Das war mein Vorhaben. Ausgelöst durch Deine farbige Kennzeichnung. Aber den Geistesblitz hatte ich fern vom Computer. Und konnte es erst abends testen.

Doch ich fand heraus, dass es nur beim Drucken gehen würde: Also zuerst eine PostScript-Datei und dann destillieren. Das wäre etwas umständlich.

Ab welcher InDesign-Version ist denn diese Option "leere Seiten auslassen" vorhanden?

Gruss, Hans

script seiten entfernen

Uwe Laubender
Beiträge gesamt: 5316

10. Nov 2018, 17:03
Bewertung:

gelesen: 8316

Beitrag als Lesezeichen
Hallo Hans,
sorry. Du hast ja Recht. Die Option gibt's wirklich nur im Druckmenü.
Für einen Workflow wie: PostScript drucken, PDF/X-1a distillen würde das zumindest ausreichen.
*****
Mit herzlichem Gruß,
Uwe Laubender

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

10. Nov 2018, 17:07
Bewertung:

gelesen: 8308

Beitrag als Lesezeichen
Hallo Uwe,

kein Problem. Danke für die Bestätigung.

Aber das wäre doch ein Wunsch-Feature für ein nächstes Update.
Du hast doch einen guten Draht zu Adobe ... ;-)

Gruss, Hans

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

10. Nov 2018, 17:54
Bewertung:

gelesen: 8293

Beitrag als Lesezeichen
Hallo Armin,

ich habe Dir per PM die Version 07d zugestellt.

*****
Dank Werner Perplies dauert jetzt die Ausführung nur noch knapp sieben Minuten. Werner hatte die tollkühne Idee, die Seiten nicht zu entfernen, sondern in ein neues Dokument zu kopieren.

Von zehn Testläufen liess ich die zwei schlechtesten und das beste der Ergebnisse weg, addierte die restlichen sieben und teilte den Wert durch sieben. Umgerechnet ergab das 6'44". Nicht schlecht, wenn man bedenkt, dass 1146 Seiten kopiert wurden.

*****
Von Uwe Laubender stammt die geniale Methode, die "guten" Seiten zu ermitteln. Hätte ich nie so geschafft!

*****
Weil die Ausführung jetzt akzeptabel schnell ist, wird auf das Abstellen der Auffrischung verzichtet. Und der Anwender kann mit drei Dialogen (siehe Anhänge) benachrichtigt werden, was gerade geschieht.

Gruss, Hans

Anhang:
1_Vorbereitungen.png (13.1 KB)   2_Seiten_kopieren.png (11.2 KB)   3_Aufraeumen.png (12.6 KB)

script seiten entfernen

WernerPerplies
Beiträge gesamt: 2762

10. Nov 2018, 18:15
Bewertung:

gelesen: 8278

Beitrag als Lesezeichen
Moin Hans,

Antwort auf: Dank Werner Perplies dauert jetzt die Ausführung nur noch knapp sieben Minuten. Werner hatte die tollkühne Idee, die Seiten nicht zu entfernen, sondern in ein neues Dokument zu kopieren.


Nichts Tollkühnes, sondern jahrelange Erfahrung. :-)
Immer wenn intensiv im Speicher geschoben werden muss, bei großer Datenmenge, ist das der Turbogang.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

11. Nov 2018, 09:12
Bewertung:

gelesen: 8167

Beitrag als Lesezeichen
Hallo Werner,

:-)

Auf solche, Deine, Erfahrungen kann ich halt nicht zurückgreifen. Beim Produzieren von Zeitschriften werden andere Methoden eingesetzt.

Darum war ich zuerst eher skeptisch und erwartete keine grosse Verbesserung. Nochmals besten Dank für Dein hartnäckiges Dranbleiben.

Gruss, Hans

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

2. Dez 2018, 21:25
Bewertung:

gelesen: 7691

Beitrag als Lesezeichen
Hallo Armin,

jetzt habe ich endlich Zeit gefunden, um die im Beitrag #39 skizzierte Outline umzusetzen.

Und noch etwas effizienter: Der erhoffte Geschwindigkeits-Schub übertrifft die kühnsten Erwartungen.
Das Aktualisieren der 573 Seiten dauert zehn ... Sekunden! (plus ein paar Tausendstel :-).

*****
– Ein Dokument ist geöffnet, welches die notwendige Anzahl an Seiten (= 1146) aufweist;
– den ungeraden Seiten ist die Musterseite "A" (= die Vorderseite der Antwortkarte) zugewiesen;
– den geraden Seiten die Musterseite "B" (= die Rückseite, mit dem Treuebonus-Betrag);
– die Musterseite "C" ist vorbereitet. Sie enthält u.a. den benannten Textrahmen für die Adresse;
– nach dem Start des Scripts wird die gewählte CSV-Datei eingelesen;
– aus den Spalten "Vorname, Name", "Straße", "Ort" und "Betrag" wird je ein Array erzeugt;
– dann macht das Script eine Schleife durch den Array "Betrag".

Angenommen, der aktuelle Wert lautet "XX,XX". Dann wird ...
– der aktuellen Seite die Musterseite "C" zugewiesen, der Rahmen "Adresse" wird übergangen;
– die Werte für die Textkette "Frau\rVorname Name\rStraße\rOrt" werden aus den Arrays gepflückt ...
– ... und im Textrahmen "Adresse" eingesetzt.

Ist der aktuelle Wert ein Euro-Betrag, dann ...
– werden die Textrahmen "Treuebonus" und "Adresse" übergangen;
– im ersten wird per 'changeText()' der Name eingesetzt und mit 'changeGrep()' der Euro-Betrag;
– im Textrahmen "Adresse" wird die zusammengesetzte Adresse eingesetzt.

Zum Beschleunigen der Ausführung wird ...
– das Dokument geschlossen und versteckt geöffnet;
– der Preflight abgestellt.

Zusätzlich informiert ein Dialog laufend über die verbleibende Anzahl der zu ändernden Seiten.

Gruss, Hans