[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

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

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

strauch
Beiträge gesamt: 170

15. Jan 2013, 16:57
Beitrag # 1 von 15
Bewertung:
(3673 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

mich macht es gerade ganz Kirre. Ich möchte gerne mit einem Script Indesign Dokumente als PDF Exportieren. Aber nur wenn auf einer Seite auf einer Ebene ein Objekt liegt, und dann auch nur diese Seite.

Was ich bisher hin bekommen habe, ist ein PDF zu exportieren, wenn auf irgendeiner Seite auf der bestimmten Ebene ein Objekt liegt. Bzw. Eben nicht zu exportieren wenn kein Objekt auf der Seite liegt.

Code
var itemonlayer = app.activeDocument.layers.item("Ebene 3").allPageItems.length; 
if (itemonlayer >= 1)
{
ExportPDF();
}


So nun wollte ich erst mal ohne for Schleife schauen, ob ich auch schauen kann, ob auf Seite 1 oder 2 oder 3 ein entsprechendes Objekt liegt und dann per PageRange auch nur diese Seite zu exportieren. Das schaff ich aber nicht. Per Schleife die Seiten durchgehen und mit currentPage.layers.item...... geht nicht. Habt ihr ein Tipp, wie ich das noch auf eine Seite begrenzen kann und dann einfach die Seiten per Schleife durchgehe?

Code
for (var i = 0; i < app.activeDocument.pages.length; i++) { } 


Danke und Grüße

strauch

(Dieser Beitrag wurde von strauch am 15. Jan 2013, 17:01 geändert)
X

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

-hans-
Beiträge gesamt: 748

15. Jan 2013, 17:39
Beitrag # 2 von 15
Beitrag ID: #506875
Bewertung:
(3642 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

bei einer schleife durch die Seiten musst du auf die property name des itemLayers des einzelnen page items gehen. Anders herum bei der Schliefe über den Layer über die parentPage des Pageitems.


als Antwort auf: [#506871]

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

strauch
Beiträge gesamt: 170

15. Jan 2013, 18:03
Beitrag # 3 von 15
Beitrag ID: #506878
Bewertung:
(3627 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

sorry bin gerade etwas wirr im Kopf. Müsste nicht theoretisch soetwas gehen:

Code
var itemonlayer = app.activeDocument.pages.item(0).layers.item("Ebene 3").allPageItems.length;  
if (itemonlayer >= 1)
{
ExportPDF();
}


??? Das mag er bei mir aber nicht.

Dann kommt die Fehlermeldung:
Objekt unterstützt Eigenschaft oder Methode layers nicht....

Ich hab das so verstanden das ich die Elternelemnte bzw. Elemente einfach hinter einander schreiben kann und es so eingrenzen kann. Quasi erst auf die Seite, dann Ebene, Gruppe, dann Art des Objekts usw.

Aber das scheine ich nicht verstanden zu haben. Und allPagesItems meint alle Objekt innerhalb der Eingrenzung z.B. der Ebene und mit PageItems kann ich mir spezifische rausangeln?!

Ich mach erstmal Feierabend, vielleicht ist morgen der Knoten weg.

Danke


als Antwort auf: [#506875]

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

mx
Beiträge gesamt: 161

15. Jan 2013, 18:29
Beitrag # 4 von 15
Beitrag ID: #506882
Bewertung:
(3601 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Strauch,

Code
layers 

ist eine Collection unter
Code
document 

und nur da, eine page hat keine layer unter sich, layer sind dokumentglobal in InDesign.
Wenn Du von einem einzelnen Element eine Ebene brauchst gibt es die durch
Code
itemLayer 

von diesem Element selbst.

Also:
Durch die Objekte auf dem "Spezial-Layer" gehen, die passende Seite ermitteln (z.B. mit parentPage und davon name oder documentOffset) und diese Menge (evtl. noch um die doppelten Einträge reduziert) dann für den PDF-Export benutzen.

In etwa so:
Code
ExportPDF = function(pageOffset){ 
alert((pageOffset + 1) + ". Seite drucken.");
}

var lastPage = 0;
var currentPage = 0;
var currentPageItem = null;
for (var i = 0; i < app.activeDocument.layers.item("Ebene 3").pageItems.length; i++) {
currentPageItem = app.activeDocument.layers.item("Ebene 3").pageItems[i];
currentPage = currentPageItem.parentPage.documentOffset;
if (currentPage > lastPage) {
lastPage = currentPage;
ExportPDF(currentPage);
}
}


Viele Grüße
Jo


als Antwort auf: [#506878]

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

strauch
Beiträge gesamt: 170

16. Jan 2013, 09:13
Beitrag # 5 von 15
Beitrag ID: #506899
Bewertung:
(3521 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jo,

vielen Dank fürs entknoten helfen. Das Layers Dokumenten global sind, darüber hab ich gestern garnicht nachgedacht, aber stimmt so.

Danke und Grüße

strauch


als Antwort auf: [#506882]

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

strauch
Beiträge gesamt: 170

16. Jan 2013, 10:43
Beitrag # 6 von 15
Beitrag ID: #506906
Bewertung:
(3498 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ mx ]
Code
var lastPage = 0; 
var currentPage = 0;
var currentPageItem = null;
for (var i = 0; i < app.activeDocument.layers.item("Ebene 3").pageItems.length; i++) {
currentPageItem = app.activeDocument.layers.item("Ebene 3").pageItems[i];
currentPage = currentPageItem.parentPage.documentOffset;
if (currentPage > lastPage) {
lastPage = currentPage;
ExportPDF(currentPage);
}
}



Ich komme mir gerade vor wie, stell dich nur blöd genug an, dann machts ein anderer für dich.

Also es klappt so nicht und es gibt auch leider keinerlei Fehlermeldung. Ich versuch jetzt mal dahinter zu kommen, also versteh mein "Scriptzerflücke" nicht als Kritik, ich mach es um zu schauen das ich alles richtig verstanden habe.

Code
var lastPage = 0; 
var currentPage = 0;
var currentPageItem = null;


Definieren der benötigten Variablen.

Code
for (var i = 0; i < app.activeDocument.layers.item("Ebene 3").pageItems.length; i++) { 


For Schleife für jedes Objekt auf der Spezialebene. Will ich mir mit einem Alert nur
Code
app.activeDocument.layers.item("Ebene 3").pageItems.length 

ausgebene lassen kommt ein Fehler. Mit allpageItems klappts. Sollte das trotzdem so funktionieren? Meine Idee, ich brauch die Gesamtzahl der Items um diese dann mit der For Schleife durchgehen zu können.

Code
currentPageItem = app.activeDocument.layers.item("Ebene 3").pageItems[i]; 


Wählt die Items auf Ebene3 der Reihe nach aus. Wenn ich einzeln für jedes Dokument da reinschaue gibt er immer Objekt aus, egal ob was drauf liegt oder nicht......

Code
currentPage = currentPageItem.parentPage.documentOffset; 


Gibt die Seitenzahl aus, auf der sich das oben genannte Item befindet. Wenn ich das außerhalb der Schleife mache, gibt es die Fehlermeldung "Objekt ist ungültig".

Code
	if (currentPage > lastPage) { 
lastPage = currentPage;
ExportPDF(currentPage);
}


Wenn die aktuelle Seite größer ist als die letzte Seite dann mach die aktuelle Seite zur letzten Seite und exportiere die aktuelle Seite als PDF.

Hab ich das alles richtig verstanden?

Gibt es eigtl. einen Debuger mit dem ich das Script Zeilenweise durchgehen kann und sehe was in der Variablen gerade an Info drin steckt?

Danke noch mals für eure Hilfe.


als Antwort auf: [#506882]

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

WernerPerplies
Beiträge gesamt: 2762

16. Jan 2013, 11:08
Beitrag # 7 von 15
Beitrag ID: #506911
Bewertung:
(3484 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Gibt es eigtl. einen Debuger mit dem ich das Script Zeilenweise durchgehen kann und sehe was in der Variablen gerade an Info drin steckt?


Benutzt Du denn das ESTK nicht?

Da gibt's doch den gewünschten Debugger.


als Antwort auf: [#506906]

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

strauch
Beiträge gesamt: 170

16. Jan 2013, 11:15
Beitrag # 8 von 15
Beitrag ID: #506913
Bewertung:
(3478 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich muss gestehen ich nutze meinen normalen Editor, ich schau es mir mal an. Bisher hab ich auch immer einfachere Scripts in Photoshop geschrieben.


als Antwort auf: [#506911]

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

WernerPerplies
Beiträge gesamt: 2762

16. Jan 2013, 11:19
Beitrag # 9 von 15
Beitrag ID: #506914
Bewertung:
(3473 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ach ja, und ein wenig Lesestoff hilft manchmal auch:
Bücher und weitere Infos


als Antwort auf: [#506913]

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

strauch
Beiträge gesamt: 170

16. Jan 2013, 11:32
Beitrag # 10 von 15
Beitrag ID: #506915
Bewertung:
(3454 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Tipps, ich arbeite mich gerade durch und schau gerade in den Debugger was in den Variablen auftaucht. Danke. Ja ein Indesign Scriptbuch werde ich mir auch mal bestellen.


als Antwort auf: [#506914]

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

strauch
Beiträge gesamt: 170

16. Jan 2013, 11:55
Beitrag # 11 von 15
Beitrag ID: #506918
Bewertung:
(3432 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Der Debugger hilft sehr @ mx das script klappt. Jetzt muss ich das nur noch richtig umsetzten.
Aus irgendeinem Grund beendet das Script, nach dem er den Codeschnippsel durchlaufen hat, wenn in der ersten Datei ein Objekt auf der Ebene 3 liegt. Liegts in der 2. Datei läufts durch und er öffnet auch die dritte Datei. Aber das finde ich auch noch.


als Antwort auf: [#506915]

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

WernerPerplies
Beiträge gesamt: 2762

16. Jan 2013, 12:14
Beitrag # 12 von 15
Beitrag ID: #506921
Bewertung:
(3405 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Beenden ist nicht gerade informativ:
ohne Fehlermeldung, oder mit Fehlermeldung?

Auf jeden Fall hilft eine saubere Fehlerbehandlungsroutine.

Für den Anfang solltest Du einen Code in ein Try-Catch-Construct kapseln:

Code
try 
{
// Dein Code
}
catch (e)
{
alert(e.message);
}



als Antwort auf: [#506918]

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

strauch
Beiträge gesamt: 170

16. Jan 2013, 12:19
Beitrag # 13 von 15
Beitrag ID: #506922
Bewertung:
(3396 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Tut mir leid wenn es gerade etwas Konfus ist, ja einfach beenden ist doof. Aber es gab in der Tat keine Fehlermeldung. Ich vermute es liegt daran das ich 2 for schleifen ineinander hatte und beide mit i++ arbeiteten. Ich hab die innere jetzt einfach auf j++ umgestellt. Ich muss jetzt erst mal mein Script durchtesten und die Fehler ausmerzen und die Einzelteile durchtesten und aus dem Gesamtscript rausnehmen. Und selbst was hinbekommen, ich werde berichten :-)

Danke und Grüße

strauch


als Antwort auf: [#506921]

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

strauch
Beiträge gesamt: 170

16. Jan 2013, 16:33
Beitrag # 14 von 15
Beitrag ID: #506960
Bewertung:
(3321 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ WernerPerplies ] Für den Anfang solltest Du einen Code in ein Try-Catch-Construct kapseln:


Der Tipp ist sehr hilfreich, danke.

Nun klappt alles. Dass das Script sich beendete lag an den beiden i Variablen in den verschachtelten for-Schleifen.

Dann musste ich noch die currentPage in eine String umwandeln damit ich die mit "pageRange" beim PDF Export einlesen kann, das ging mit
Code
var myPagePrint = myPage.toString(); 


Und dann habe ich oben in dem Script von mx noch
Code
var lastPage = 0 

auf -1 setzten sonst klappte das nicht, wenn etwas auf der ersten Seite (=0) auf der Ebene 3 lag.

Schön wenn die Dinge klappen.


als Antwort auf: [#506921]

Seite als PDF Exportieren, wenn Objekt auf bestimmter Ebene

WernerPerplies
Beiträge gesamt: 2762

16. Jan 2013, 16:44
Beitrag # 15 von 15
Beitrag ID: #506961
Bewertung:
(3318 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Es freut mich, dass jetzt alles geklappt hat.


als Antwort auf: [#506960]
X