hilfdirselbst.ch
Facebook Twitter gamper-media
lowtone S
Beiträge: 145
16. Feb 2017, 14:48
Beitrag #1 von 5
Bewertung:
(1318 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Vor dem Drucken eine Ebene ausblenden


Hallo Skripter*innen!
Ich möchte euch ein Skript zur Verfügung und Diskussion stellen, dass ich gerade geschrieben habe.

Ausgangslage:
Wir haben in unserem Designbüro die berufstypische Unart, unsere Briefe, Konzepte etc. mit InDesign zu schreiben. Dafür nutzen wir eine Vorlage, in der die Gestaltung unseres gedruckten Briefpapiers sichtbar ist. Wenn ich nun ein/e Angebot, Rechnung, Konzept etc. per Mail verschicken will dann schreibe ich ein PDF und ab damit. Wenn ich das Dokument aber auf unser echtes Briefpapier drucke, blende ich die Ebene mit dem Druckdesign aus und drucke das Dokument.
Problem:
Natürlich vergesse ich meistens, die Ebene auszublenden und drucke dann das Druckdesign über das Offset gedruckte Briefpapier. Blöd.
Endlich habe ich nun ein Skript geschrieben, dass dieses Problem löst.
Skript:
Suche die Ebene, die einen spezifischen Namen trägt.
Ist die Ebene vorhanden, frage nach, ob die Ebene gedruckt werden soll, oder nicht.
Blende sie entsprechend ein/aus und öffne den Druck-Dialog.
Ist die Ebene nicht vorhanden, öffne den Druck-Dialog.

Ich habe mir dieses Skript auf Apfel-P gelegt und damit müsste alles gut sein.

Falls das hier jemand gebrauchen kann, viel Spaß damit!
Falls jemand Verbesserungsvorschläge hat, her damit, ich lerne gerne!

Und eine Frage habe ich noch:
Kann ich direkt abfragen, ob der Druck-Dialog geöffnet wird, und das Skript daran knüpfen? Denn wenn ich den Druck-Dialog über das Menü mit der Maus aufrufe, wird das Skript natürlich vorher nicht gestartet. Also statt einem Skript, dass den Druck-Dialog startet, möchte ich, dass der Druck-Dialog das Skript startet. Geht das? In etwa wie? (Habe es nicht gefunden, aber auch nicht lange gesucht, ehrlich gesagt.)

So, viel Spaß mit dem Skript und Beste Grüße aus der Gutenbergstadt Mainz,
Simon

Code
// vorDruckEbeneAusblenden.jsx 
// InDesign JavaScript
//
// Vor dem Druck die Ebene »eMail-Hintergrund« ausblenden
//
// Simon Wehr / Februar 2017
// simon@wehrundweissweiler.de
//
// ############################################
//
// Auf geöffnete Dokumente prüfen
//

if (app.documents.length == 0) {
alert("Es ist kein Dokument geöffnet! \nDieses Script benötigt ein Dokument.");
exit();
}


//
// Grundvariablen definieren
//

var meinDokument = app.documents[0];
var meinEbenenName = "eMail-Hintergrund"; // Die Ebene, die das Skript ausblenden soll.
var ebeneGefunden = false;

//
// Überprüfen, ob Ebene <meinEbenenName> vorhanden ist.
//

for (zielEbene = 0; zielEbene < meinDokument.layers.length; zielEbene++){

if (meinDokument.layers[zielEbene].name == meinEbenenName){
var meineEbene = meinDokument.layers[zielEbene]
var ebeneGefunden = true;
var ebeneDrucken = confirm("Soll die Ebene »"+meinEbenenName+"« mit gedruckt werden?", false);

if (ebeneDrucken == true) {
meineEbene.visible = true;
}
if (ebeneDrucken == false) {
meineEbene.visible = false;
}
}
}

meinDokument.print();

Top
 
X
Ingo Herber p
Beiträge: 416
20. Feb 2017, 08:39
Beitrag #2 von 5
Beitrag ID: #555745
Bewertung:
(1171 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Vor dem Drucken eine Ebene ausblenden


Antwort auf [ lowtone ] Ich habe mir dieses Skript auf Apfel-P gelegt und damit müsste alles gut sein.

Nette Idee.
Wenn es ganz komfortabel werden soll, könnte das Script zu den Startup-Scripten und ein Eventlistener für den Druckbefehl und für den Export eingefügt werden.
Ist jemand so lieb und kann den Eventlistener für Drucken und für den (PDF-)Export ergänzen?


Und in Verbinung mit diesem Script kann die "Vorlagen-Ebene" auch bei neuen Dokumenten automatisch erstellt werden:
http://www.hilfdirselbst.ch/...i?post=550625#550625

Gruß,
Ingo
_______________________
Windows 10 prof 64bit | Adobe CC 2017.1
als Antwort auf: [#555678] Top
 
lowtone S
Beiträge: 145
20. Feb 2017, 09:35
Beitrag #3 von 5
Beitrag ID: #555748
Bewertung:
(1149 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Vor dem Drucken eine Ebene ausblenden


Hallo Ingo,
das wäre ja eigentlich meine Idee gewesen. Aber ich habe keinen Plan, wie ich das anstelle. Ich bin soweit, dass es irgendwie mit EventListener zu tunhat und das beforePrint mir weiterhelfen kann.
Aber leider ist mir das Konzept der eventListener fremd, ich habe sie schon öfter in Skripten gesehen, aber keinen Überblick, wie ich die selber einsetzen kann.
Mein Ansatz geht dahin:
Code
var myEventListener = app.addEventListener("beforePrint");     

function scriptBeforePrint(){
alert("beforePrint");

}

Aber was mache ich damit?
Beste Grüße
Simon
als Antwort auf: [#555745] Top
 
Kai Rübsamen  M  p
Beiträge: 4381
20. Feb 2017, 14:36
Beitrag #4 von 5
Beitrag ID: #555766
Bewertung:
(1079 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Vor dem Drucken eine Ebene ausblenden


Hallo!

Ich habe auch keine Ahnung, wie man das richtig macht, aber hier mal ein Versuch:

Code
// vorDruckEbeneAusblenden.jsx 

#targetengine "doSomethingInCase"
app.addEventListener("beforePrint", onPrint);

function onPrint(event) {
// das Dokument im Vordergrund
var curDoc = event.parent;

if (curDoc.constructor.name != "Document") {
return;
}

// die Ebene, die das Skript ausblenden soll
var lay = curDoc.layers.itemByName("eMail-Hintergrund");
// den Status der Ebene festhalten
var status = lay.visible;
// den Anwender fragen …
var ebeneDrucken = confirm("Achtung:\rSoll die Ebene »"+ lay.name +"« mit gedruckt werden?", false);
// … und bei Bedarf die Sichtbarkeit umschalten
if (ebeneDrucken) {
lay.visible = true;
return
}
else {
lay.visible = false;
return;
}
}


Was mir nicht gefällt:
1. Der Anwender könnte beim Drucken auf "Abbrechen" klicken > dann bleibt die vom Skript gesetzte Einstellung
2. Der Anwender hat gedruckt und dann bleibt ebenfalls die Einstellung

Frage: Braucht es ein zweites Event "afterPrint", damit man "lay.visible = status" setzen kann? Funktioniert das auch bei Abbrechen?

Merke gerade, dass ich das Prüfen der Ebene mit .isValid vergessen habe; kann man ja aber noch nachholen.

Gruß Kai Rübsamen
_______________________

Zusatztermin 7.12.: Du suchst den idealen Workflow zwischen Text und Layout? Beim InCopy-Seminar in Bremen zeige ich Dir, wie Du deine Produktions- und Korrekturzeiten erheblich verkürzen kannst. Weitere Infos und Anmeldung: medienplantage
als Antwort auf: [#555748]
(Dieser Beitrag wurde von Kai Rübsamen am 20. Feb 2017, 14:39 geändert)
Top
 
lowtone S
Beiträge: 145
20. Feb 2017, 15:06
Beitrag #5 von 5
Beitrag ID: #555767
Bewertung:
(1065 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Vor dem Drucken eine Ebene ausblenden


Hallo Kai,
vielen Dank erstmal. Ich sehe, ich muss mich in die Thematik EventHandler mal wo einlesen (kennt jemand eine gute Einführung dazu?).
Grundsätzlich funktioniert das Skript ja, wobei ich beim Start von ID noch eine Fehlermeldung bekomme »fehlender erforderlicher Parameter "handler" für Methode "addEventListener".
Vermutlich, weil kein Dokument geöffnet ist?

Deine Bedenken bzgl. Status bei Abbruch etc. kann ich grundsätzlich nachvollziehen und finde sie eine wichtige Ergänzung. Im konkreten Fall ist es jedoch wurst, weil bei erneutem Drucken erneut gefragt wird. Einzig bräuchte ich jetzt das gleiche Skript, bei Export ins PDF, das die Ebene dann wieder einblendet. Aber dafür liegen alle Bausteine oben parat, würde ich sagen.

Insgesamt fänd ich ja prima, wenn man dieses Skript an das Dokument / Vorlagedokument knüpfen könnte. Wenn ich zwei Tage keine Briefpapier-Dokumente öffne, bräuchte ich das Skript ja nicht. Ach, aber da kommen wir jetzt in den Bereich sinnloses Wunschkonzert und Skripten als Selbstzweck.

Also von meiner Seite bin ich glücklich!
Wer hier noch weiter Hinschmalz investieren will – gerne! Aber bitte nur aus sportlichen Gründen, nicht um mir zu helfen ;-)

Wie immer vielen Dank!
Beste Grüße
Simon
als Antwort auf: [#555766] Top
 
X