[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Letztes Element auf der Seite mit besimmten Scriptlabel löschen

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

Letztes Element auf der Seite mit besimmten Scriptlabel löschen

Friederike Römer
Beiträge gesamt: 5

9. Jan 2013, 11:53
Beitrag # 1 von 7
Bewertung:
(2366 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich habe eine XML-Datei aus unserer Datenbank in InDesign (CS 5.5, Windows 7) importiert, um einen vollständigen Produktkatalog zu erzeugen. Vor jeder Produktgruppe wird eine Zwischenüberschrift eingefügt (eigener Textrahmen mit dem Scriptlabel "katalog_untergruppe"), bei einem Seitenumbruch kann es jedoch passieren, dass diese als letztes Element auf der vorhergehenden Seite steht, auf der neuen Seite wird er zusätzlich automatisch neu erzeugt. Diese "letzten" Elemente möchte ich nun über ein Skript in der fertigen Datei suchen und löschen.
Mein erster Ansatz war die Elemente der Seite zu zählen und falls der Textrahmen einen höheren Wert als 40 hat zu löschen. Leider variieren die Inhalte der Seiten zu stark, so bleibt manchmal ein Textrahmen stehen und manchmal wird ein noch benötigter gelöscht. Vielleicht hat einer von Euch eine Lösungsidee.
Danke im vorraus Rike

Hier meine erster Ansatz, vielleicht hilfts:

function test(){
for(var i=0;i<document.allPageItems.length; i++){
if(document.allPageItems[i].label != ""){
//pagestart
if(document.allPageItems[i].label == 'katalog_untergruppe'){
var n= 1;
while(document.allPageItems[i+n].label == ""){
n++;
}
if(n>40){
document.allPageItems[i].remove();
}
}
if(document.allPageItems[i].label == 'katalog_untergruppe' && document.allPageItems[i+1].label == 'pagestart'){
document.allPageItems[i].remove();
}
}
}
}
test();
X

Letztes Element auf der Seite mit besimmten Scriptlabel löschen

mx
Beiträge gesamt: 161

9. Jan 2013, 13:11
Beitrag # 2 von 7
Beitrag ID: #506537
Bewertung:
(2336 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Frederike,

der Punkt mit
Zitat auf der neuen Seite wird er zusätzlich automatisch neu erzeugt

klingt interessant, damit könnte dann z.B. dieser zusätzliche Rahmen noch markiert werden.
Dann die markierten Rahmen suchen und jeweils auf der vorhergehenden Seite den Rahmen gleichen Inhalts entfernen.
Oder gibt es da mehrere und es geht zwingend darum den letzten zu finden?
Wie klappt es überhaupt den Seitenumbruch zu erkennen und dann die Überschrift samt Rahmen erneut zu schreiben? Da ist doch eigentlich schon der Schlüssel drin z.B. dann den zuletzt geschriebenen Rahmen zu verschieben, statt neu anzulegen, falls das z.B. auch bereits über ein Script läuft.

Viele Grüße
Jo


als Antwort auf: [#506518]

Letztes Element auf der Seite mit besimmten Scriptlabel löschen

Friederike Römer
Beiträge gesamt: 5

9. Jan 2013, 13:39
Beitrag # 3 von 7
Beitrag ID: #506547
Bewertung:
(2320 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Der Import erfolgt aus einer XML Datei die vorher über XSLT in ein InDesign verständliches Dokument transformiert wird. In dieser Datei ist über ein Importplugin für XML (viamedici) eine Satzspiegelhöhe definiert, ist ein Element oder eine Gruppe zu groß, passt also nicht mehr auf die Seite, wird ein Seitenumbruch erzeugt und das Element/die Gruppe auf die neue Seite verschoben. Die aktuelle Zwischenüberschrift steht auf einer neuen Seite im Kopftext und wird aus den Daten erzeugt, also ist es nicht wirklich eine Wiederholung des vorherigen Textrahmens, sondern völlig unabhängig. Daher muss das letzte Element der Seite gelöscht werden, falls es das Scriptlabel besitzt.
Ich habe in der XSLT Programierung schon gesucht und probiert das zu lösen, aber leider wird der Seitenumbruch erst beim Import ermittelt, und deshalb ist es nichts worauf ich vorher schon prüfen kann.


als Antwort auf: [#506537]

Letztes Element auf der Seite mit besimmten Scriptlabel löschen

mx
Beiträge gesamt: 161

9. Jan 2013, 16:58
Beitrag # 4 von 7
Beitrag ID: #506578
Bewertung:
(2277 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Friederike,

dann musst du im Script tatsächlich alle Seiten durchgehen, jeweils auf einer Seite über die TextFrames gehen und den mit dem größen Wert in geometricBounds[0] (größter Y-Wert = Oberkante des untersten Rahmens) prüfen, ob das Label gesetzt ist, das die Zwischenüberschriften identifiziert. Falls vorhanden löschen, falls nicht auf der nächsten Seite weitermachen.

In etwa so:
Code
for (var i = 0; i < app.activeDocument.pages.length; i++) { 
var currentPage = app.activeDocument.pages[i];
var lastTextFrame;
for (var j = 0; j < currentPage.textFrames.length; j++) {
var currentTextFrame = currentPage.textFrames[j];
if (j == 0)
lastTextFrame = currentTextFrame;
else if (currentTextFrame.geometricBounds[0] > lastTextFrame.geometricBounds[0])
lastTextFrame = currentTextFrame;
}
if (lastTextFrame.label == 'katalog_untergruppe')
lastTextFrame.remove();
}



Viele Grüße
Jo


als Antwort auf: [#506547]
(Dieser Beitrag wurde von mx am 9. Jan 2013, 17:15 geändert)

Letztes Element auf der Seite mit besimmten Scriptlabel löschen

Friederike Römer
Beiträge gesamt: 5

9. Jan 2013, 17:19
Beitrag # 5 von 7
Beitrag ID: #506581
Bewertung:
(2267 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
@Jo
Super, fast perfekt :-)
Manchmal ist jedoch auf der Seite unter dem Textrahmen noch ein Bildrahmen, dann darf die Überschrift natürlich nicht gelöscht werden. Nur wenn er definitiv das letzte Element der Seite (ohne Musterseitenelemente natürlich) ist.
Kann man da noch so eine Abfrage einfügen, dass generell auf den letzten Rahmen geprüft wird, wenn dieser dann das Scriptlabel hat, und nicht nur auf Textrahmen?

Gruß Rike


als Antwort auf: [#506578]

Letztes Element auf der Seite mit besimmten Scriptlabel löschen

mx
Beiträge gesamt: 161

9. Jan 2013, 18:02
Beitrag # 6 von 7
Beitrag ID: #506586
Bewertung:
(2234 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Friederike,

klar, dann geht die innere Schleife halt so wie bei deinem ersten Ansatz über die pageItems statt die textFrames, dann ist es egal ob Bild oder Text.

Viele Grüße
Jo


als Antwort auf: [#506581]

Letztes Element auf der Seite mit besimmten Scriptlabel löschen

Friederike Römer
Beiträge gesamt: 5

10. Jan 2013, 07:31
Beitrag # 7 von 7
Beitrag ID: #506605
Bewertung:
(2179 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jo,

Super vielen lieben Dank, funktioniert perfekt :)
Genau so wollte ich das haben.

Viele Grüße
Rike

hier nun das fertige Skript
Code
function test(){ 

for (var i = 0; i < app.activeDocument.pages.length; i++) {
var currentPage = app.activeDocument.pages[i];
var lastpageItems;
for (var j = 0; j < currentPage.pageItems.length; j++) {
var currentpageItems = currentPage.pageItems[j];
if (j == 0)
lastpageItems = currentpageItems;
else if (currentpageItems.geometricBounds[0] > lastpageItems.geometricBounds[0])
lastpageItems = currentpageItems;
}
if (lastpageItems.label == 'katalog_untergruppe')
lastpageItems.remove();
}
}
test();



als Antwort auf: [#506586]
(Dieser Beitrag wurde von Friederike Römer am 10. Jan 2013, 07:46 geändert)
X

Aktuell

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
21.01.2021 - 22.01.2021

Digicomp Academy AG, Bern oder Basel
Donnerstag, 21. Jan. 2021, 08.30 Uhr - Freitag, 22. Jan. 2021, 17.00 Uhr

Kurs

Dieser Basic-Kurs ist der perfekte Einstieg in die Welt von InDesign, dem vielseitigen Layout-Programm. Sie lernen, wie InDesign aufgebaut ist, wie saubere Dokumente erstellt werden und wie man korrekt mit gelieferten InDesign-Projekten umgeht.

Dauer: 2 Tage
Preis: CHF 1'400.–

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/INDEM1

Veranstaltungen
21.01.2021

Illustrator - das unbekannte Wesen

Online
Donnerstag, 21. Jan. 2021, 19.00 Uhr

Vortrag

Millionen Funktionen, und immer kommen neue dazu! Monika Gause ist jeden Januar aufs Neue ein gern gesehener Gast bei der IDUG Stuttgart. - Sie bringt alle Neuerungen mit, die 2020 dazukamen und jede Menge Tipps und Tricks. - Zudem wird sie uns informieren, was wir in Illustrator beachten müssen, wenn wir Daten fürs Web erstellen bzw. aufbereiten. - Wichtig zu wissen: "Dos and Don'ts" in Illustrator. Welche Fehler sollte man dringend vermeiden und was muss man unbedingt tun, damit es Spaß macht mit Illustrator zu arbeiten. - Dieses Jahr hast Du zusätzlich die Möglichkeit Monika im Voraus Fragen zu stellen. Fülle dieses Formular mit deinen Fragen; auch Beispieldateien sind anfügbar: https://forms.gle/fJmF8C6MjbDoEhED8

Nein

Organisator: InDesign Usergroup Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailidug AT satzkiste DOT de

https://idugs67.eventbrite.de/

IDUGS #67 Illustrator mit Monika Gause

Neuste Foreneinträge


Sommerurlaub ist nicht weit?

Anwendungsrahmen ausschalten auf Windows-PC?

Umstieg auf Linux ...

[GREP] beliebige Zeichen finden und durch selbe Anzahl an Leerzeichen oder Anzahl Zeichen "x" ersetzen

ICC Profil für Papier Munken Print crema FSC 90 g/m² mit 1,5 Vol.

PSD CS6 (!) Mac: Dialog "Dateiinformationen" Fenster leer und Sackgasse

weitere peinliche Fragen zu Selbstverständlichkeiten

Scannen mit Affinity Photo (V 1.8.3.641) in Win 10

Hilfe

Bilder High> Low
medienjobs