[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:
(2296 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:
(2266 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:
(2250 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:
(2207 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:
(2197 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:
(2164 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:
(2109 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
26.11.2020

Wie schafft man einen gleichbleibenden Farbeindruck im Druck und elektronischer Ausgabe? Peter Jäger erklärt wie es geht!

Zoom Meeting
Donnerstag, 26. Nov. 2020, 19.00 - 21.01 Uhr

Vortrag

Agenda: Vorstellung Verein freieFarbe e.V. und pro2media gmbh Was verlangt der Kunde? Gleichbleibende Farbe über sämtliche Ausgaben? Für welche Ausgaben (Offset- oder Digitaldruck, Kopiersysteme, elektronische Ausgaben) Umgang mit Farben bisher: mehrere Logos- und Bildvarianten Logo Entwicklung heute: anhand pro2media gmbh, ausgehend von nur einer Logovariante Crossmediale Farben bestimmen Einsatz von Hilfsmitteln wie digitaler- und gedruckter Farbatlas und Gamutmap.com Sauberes Farben CD erstellen mit eindeutig definierten Werten Umsetzung in den Softwaren (Word, FileMaker, InDesign, Illustrator, Web CMS, OpenSource usw.) Verarbeitung in den Druckereien (anhand Callas pdfToolbox)

Nein

Organisator: InDesign Usergroup Stuttgart

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

idugs66.eventbrite.com

Grafik- und Bilddaten crossmedial aufbereiten
Veranstaltungen
30.11.2020 - 01.12.2020

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Montag, 30. Nov. 2020, 08.30 Uhr - Dienstag, 01. Dez. 2020, 17.00 Uhr

Kurs

Im Kurs lernen Sie die Schritte vom Import des Rohmaterials bis zum fertig exportierten Clip kennen. Dazu zählen die Materialverwaltung, das Trimmen für Roh- und Feinschnitt, Blenden, Titel und Effekte und eine Übersicht über die wichtigsten Formate.

Preis: CHF 1'700.-
Dauer: 2 Tage

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/video-und-audio-publishing/adobe-premiere-pro-cc/kurs-adobe-premiere-pro-cc-basic

Neuste Foreneinträge


Quellenangaben von Bildern innerhalb des Dokumentes pflegen

Schrift in Form umwandeln

Freitagsangebote für die 3 Programme von Serif

Zwei Fragen zur Tabelle

Anpassung von Scriptfunktion auf Bleedbox

Hyperlink aktualisierung nach Dateiumbenennung

Transparente Klebefolie bedrucken

Externe Verlinkung in Indesign ohne www

Glyphen-Salat

Grep suche nur erster Fund anzeigen
medienjobs