hilfdirselbst.ch
Facebook Twitter gamper-media

Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Alle EventHandler + Problem mit "beforeopen"

 

« « 1 2 » »  


inditac p
Beiträge: 38

24. Okt 2011, 11:28

Beitrag #1 von 19
Bewertung:

(1223 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


Hallo zusammen,

1. Ich bin auf der Suche nach einer Auflistung von allen exisitierenden eventhandler´n in Indesign. Gibt es soetwas im Netz?

2. Ich habe ein Problem mit dem eventhandler "beforeopen". Mein ausgeführtes Script soll sämtliche Bilder auf Fehler überprüfen. Das Script startet allerdings direkt wenn ich auf öffnen klicke, und zu diesem Zeitpunkt hat das Dokument die Bilder noch nicht geladen. Ich bekomme dann eine Fehlermeldung, und die Überprüfung findet nicht statt.
Hat jemand eine Idee?

Vielen Dank im vorraus.

Gruß
inditac
Top

gfellenz
Beiträge: 78

24. Okt 2011, 12:00

Beitrag #2 von 19
Beitrag ID: #482897

Bewertung:

(1212 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


hallo,

die EventHandler findest du im Objektmodell. Ich empfehle die Online Version von Jongware:

http://jongware.mit.edu

Unterhalb der Eigenschaften der Klasse Document http://jongware.mit.edu/...5.5/pc_Document.html stehen die Handler für das Dokument.

Ein Testskript mit allen Handlern kannst du unter http://www.indd-skript.de/...oad/EventHandler.jsx herunterladen.

Der passende EventHandler für dich ist vermutlich AFTER_OPEN. Wenn du dein Skript gepostet hättest, hätte ich es auch getestet.
--
Grüße aus Köln,
Gregor Fellenz
http://www.indesignblog.com

als Antwort auf: [#482893] Top

inditac p
Beiträge: 38

24. Okt 2011, 12:12

Beitrag #3 von 19
Beitrag ID: #482900

Bewertung:

(1202 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


Danke genau sowas habe ich gesucht :-)

ich habe es mit "afterOpen" versucht, es kommt die gleiche Fehlermeldung.

ich poste hier mal die beiden scripts:
Code
#targetengine "session" 
myScriptPath = "............\\Adobe_CS\\InDesign\\Presets_Skripte\\Skripte\\2_prüfalt.jsx";
var myFile = new File (myScriptPath);

app.addEventListener( "afterOpen", myFile);


Code
// Zeigt alle Zeichnungen an, die an fünfzehnter Stelle keinen Unterstrich enthalten. Das Script geht davon aus, dass dies dann ein älterer Stand ist. 


var myImages = app.activeDocument.allGraphics;
for (i = myImages.length-1; i >= 0 ; i--) {

var myImage = myImages[i].itemLink;

// Die ersten drei Buchstaben aus der Datei extrahieren
var extrakt = myImage.name.slice(14, 15);

if (extrakt != "_") {
alert ("Achtung prüfen: " + myImage.filePath);
}
}


als Antwort auf: [#482897] Top

gfellenz
Beiträge: 78

24. Okt 2011, 12:53

Beitrag #4 von 19
Beitrag ID: #482903

Bewertung:

(1186 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


Interessanterweise wird das Event einmal vom Document und einmal vom LayoutWindow (dem Fenster in dem sich das Dokument befindet) aufgerufen.
Solange das LayoutWindow noch nicht da ist, kannst du die Eigenschaft activeDocument nicht verwenden.

Der einfachste Eingriff in deinen Code wäre eine Abfrage, die prüft, wer das Event aufgerufen hat:

Code
#targetengine "sessionxxx"  

app.addEventListener( "afterOpen", checkImg);

function checkImg (myEvent) {
// Zeigt alle Zeichnungen an, die an fünfzehnter Stelle keinen Unterstrich enthalten. Das Script geht davon aus, dass dies dann ein älterer Stand ist.

if (myEvent.parent.constructor.name == "LayoutWindow") {
var myImages = app.activeDocument.allGraphics;
alert(myImages.length)
for (i = myImages.length-1; i >= 0 ; i--) {

var myImage = myImages[i].itemLink;

// Die ersten drei Buchstaben aus der Datei extrahieren
var extrakt = myImage.name.slice(14, 15);

if (extrakt != "_") {
alert ("Achtung prüfen: " + myImage.filePath);
}
}
}
}

--
Grüße aus Köln,
Gregor Fellenz
http://www.indesignblog.com

als Antwort auf: [#482900] Top

inditac p
Beiträge: 38

24. Okt 2011, 13:39

Beitrag #5 von 19
Beitrag ID: #482906

Bewertung:

(1163 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


Wäre ich nicht drauf gekommen, klingt aber logisch...leider funktioniert die Abfrage nicht mehr.
Die Bildbenennungen sind so aufgebaut:
26_07_31_0040_a_Klartext.eps
oder
26_07_31_0040___Klartext.eps
Wenn ich jetzt eine Dokument öffne mit o. g. verknüpften Bildbennungen, erkennt er das Bild mit dem "a" an 15nter Stelle nicht.

als Antwort auf: [#482903] Top

gfellenz
Beiträge: 78

24. Okt 2011, 14:50

Beitrag #6 von 19
Beitrag ID: #482912

Bewertung:

(1137 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


Logisch finde ich es nicht unbedingt...

Funktioniert die Abfrage überhaupt? Ich habe im Code meiner letzten Antwort noch ein alert(myImages.length); stehen. Dieser Hinweis müsste bei jedem Öffnen angezeigt werden?

Falls nicht: Welche InDesign Version setzt du ein? Ich habe es mit CS5.5 getestet.

By the way: Du kannst die if-Abfrage auch deutlich verkürzen:

Code
if (myImages[i].itemLink.name[14] != "_") {//...} 


Das sollte allerdings keinen Unterschied machen.
--
Grüße aus Köln,
Gregor Fellenz
http://www.indesignblog.com

als Antwort auf: [#482906] Top

inditac p
Beiträge: 38

24. Okt 2011, 15:02

Beitrag #7 von 19
Beitrag ID: #482918

Bewertung:

(1131 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


ok hatte ich vergessen zu schreiben. Ich habe CS4 Version 6.06

die alert-meldung erscheint bei mir nicht. Also wird nicht geprüft.

als Antwort auf: [#482912] Top

gfellenz
Beiträge: 78

24. Okt 2011, 16:06

Beitrag #8 von 19
Beitrag ID: #482930

Bewertung:

(1111 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


Unter CS4 wird das Event nur von der Klasse Document aufgerufen. Leider ist in diesem Fall manchmal (bei großen Dokumenten), der Array allGraphics gülitg aber die Referenzen im Array funktionieren noch nicht. Seltsam.
In diesem Fall kann man mit einer Warnung abbrechen. Eine Lösung ist es nicht. Falls noch jemand Ideen hat - gerne!

Code
#targetengine "sessionxxx"   

app.addEventListener( "afterOpen", checkImg);

function checkImg (myEvent) {
// Zeigt alle Zeichnungen an, die an fünfzehnter Stelle keinen Unterstrich enthalten. Das Script geht davon aus, dass dies dann ein älterer Stand ist.

if (myEvent.parent.constructor.name == "Document") {
// Referenz auf das Dokument herstellen
var _dok = myEvent.parent;
var myImages = _dok.allGraphics;
for (i = myImages.length-1; i >= 0 ; i--) {
if (myImage == null) {
alert("Kann das Dokument leider nicht prüfen :-(")
return;
}

var myImage = myImages[i].itemLink;


if (myImage.name[14] != "_") {
alert (_dok .name + " Achtung prüfen: " + myImage.filePath);
}
}
}
}

--
Grüße aus Köln,
Gregor Fellenz
http://www.indesignblog.com

als Antwort auf: [#482918] Top

inditac p
Beiträge: 38

26. Okt 2011, 07:48

Beitrag #9 von 19
Beitrag ID: #483059

Bewertung:

(1030 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


gfellenz, danke erstmal für deine Hilfe.

Wenn sonst noch jemand eine Idee hat bitte melden!

Im Prinzip möchte ich nur dass ein Script ausgeführt wird....das kann auch nach dem öffnen erfolgen. Zum Beispiel nach der ersten Aktion die jemand ausführt. Wichtig ist dass es nur einmal ausgeführt wird.

Gruß
inditac

als Antwort auf: [#482930] Top

WernerPerplies
Beiträge: 1034

26. Okt 2011, 08:18

Beitrag #10 von 19
Beitrag ID: #483060

Bewertung:

(1018 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


Hallo inditac,

ich bin nicht so fit mit den diversen Events, ich war aber schon erstaunt, dass "beforOpen" für Dein Problem funktionieren könnte.

Mein Lösungsvorschlag wäre es, das Open-Menue durch ein eigenen Menuepunkt zu ersetzen, der ein Skript aufruft, das die Datei öffnet und Deine gewünschten Aktionen ausführt.

Falls Du irgendein anderes Event benutzen willst, könntest Du den Mehrfachaufruf verhindern, indem Du ein Semaphore-File vor dem Öffnen einrichtest und beim Schließen wieder löscht.


Einen schönen Tag wünscht

Werner Perplies
http://www.weepee.de
12 Anwenderskripte für InDesign
schon gesehen? Wps HyperlinkInspector
Werkzeuge und Infos für die Skriptprogrammierung, schon gesehen?
WpsProfilerClass

als Antwort auf: [#483059] Top

inditac p
Beiträge: 38

26. Okt 2011, 11:06

Beitrag #11 von 19
Beitrag ID: #483071

Bewertung:

(984 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


Hallo Werner,

das Openmenü ersetzen wäre in meinem Fall nicht gut, da wir mit Büchern arbeiten.

Aber Du musst mir verraten was ein Semaphore-File ist? ...ich habe bei google nichts passendes gefunden.

Andere Variante, könnt Ihr euch folgendes Szenario vorstellen:
Ich öffne ein Dokument.
"afterOpen" fängt den Aufruf ab.
Das Script bricht den Aufruf des Dokument´s ab.
Das Script öffnet das Dokument erneut und lässt das Prüfscript im Anschluss ablaufen.

...mir fehlt zur Umsetzung leider das fachliche Wissen :-(

als Antwort auf: [#483060] Top

WernerPerplies
Beiträge: 1034

26. Okt 2011, 11:24

Beitrag #12 von 19
Beitrag ID: #483073

Bewertung:

(974 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


Hi,

Zitat sehr

vereinfacht eine Datei, in der steht, wer was gerade macht, oder gemacht hat.

Semaphore

Zitat das Openmenü ersetzen wäre in meinem Fall nicht gut, da wir mit Büchern arbeiten.


Das ist mir jetzt nicht so klar, aber ich arbeite ja relativ wenig mit InDesign, ich versuche mich da mal schlau zu machen.

Zitat Ich öffne ein Dokument.
"afterOpen" fängt den Aufruf ab.

ok
Zitat Das Script bricht den Aufruf des Dokument´s ab.

Das verstehe ich jetzt nicht, da ist das Doument doch schon offen.
Zitat Das Script öffnet das Dokument erneut und lässt das Prüfscript im Anschluss ablaufen.

Was spricht dagegen, danach direkt Dein Skript aufzurufen?


Einen schönen Tag wünscht

Werner Perplies
http://www.weepee.de
12 Anwenderskripte für InDesign
schon gesehen? Wps HyperlinkInspector
Werkzeuge und Infos für die Skriptprogrammierung, schon gesehen?
WpsProfilerClass

als Antwort auf: [#483071] Top

inditac p
Beiträge: 38

26. Okt 2011, 13:24

Beitrag #13 von 19
Beitrag ID: #483083

Bewertung:

(953 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


Das Problem ist, dass mit "afterOpen" mein prüftscript ausgeführt wird obwohl das Dokument noch nicht geladen ist. Somit bekomme ich eine Fehlermeldung. Script kann nicht ausgeführt werden weil...

sorry ich habe es zu ungenau beschrieben, meine idee ist:
ein Script welches mit "afterOpen" ausgeführt wird. Das Script beinhaltet einen Code um das aufrufen des Dokuments zu stoppen. Dann soll das Script das Dokument wieder öffnen und danach das Prüfscript ausführen.
Ich weiß nicht ob es funktioniert, aber ich vermute dass das Script dann solange wartet bis das Dokument offen ist, um danach das prüfscript auszuführen.



zum Them Buch: Die einzelnen Buchdateien öffne ich nicht über das öffnen-Menü .... sondern direkt über das Buch-Menü.

als Antwort auf: [#483073]

(Dieser Beitrag wurde von inditac am 26. Okt 2011, 13:35 geändert)
Top

WernerPerplies
Beiträge: 1034

26. Okt 2011, 13:34

Beitrag #14 von 19
Beitrag ID: #483086

Bewertung:

(950 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


Hi,

könntest Du mir mal eine Datei und Dein Skript zur Verfügung stellen?


Einen schönen Tag wünscht

Werner Perplies
http://www.weepee.de
12 Anwenderskripte für InDesign
schon gesehen? Wps HyperlinkInspector
Werkzeuge und Infos für die Skriptprogrammierung, schon gesehen?
WpsProfilerClass

als Antwort auf: [#483083] Top

inditac p
Beiträge: 38

26. Okt 2011, 13:52

Beitrag #15 von 19
Beitrag ID: #483089

Bewertung:

(931 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Alle EventHandler + Problem mit "beforeopen"


Das Startup Script
Code
#targetengine "session"  
myScriptPath = "............\\Adobe_CS\\InDesign\\Presets_Skripte\\Skripte\\2_prüfalt.jsx";
var myFile = new File (myScriptPath);

app.addEventListener( "afterOpen", myFile);



Das Prüfscript
Code
// Zeigt alle Zeichnungen an, die an fünfzehnter Stelle keinen Unterstrich enthalten. Das Script geht davon aus, dass dies dann ein älterer Stand ist.  


var myImages = app.activeDocument.allGraphics;
for (i = myImages.length-1; i >= 0 ; i--) {

var myImage = myImages[i].itemLink;

// Die ersten drei Buchstaben aus der Datei extrahieren
var extrakt = myImage.name.slice(14, 15);

if (extrakt != "_") {
alert ("Achtung prüfen: " + myImage.filePath);
}
}



im Prinzip brauchst Du nur 2 Bilddateien mit folgendem Namen:
26_07_31_0040_a_Klartext.eps
und
26_07_31_0040___Klartext.eps
und diese beiden im Dokument verknüpfen.

als Antwort auf: [#483086] Top
« « 1 2 » »  


Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Alle EventHandler + Problem mit "beforeopen"


^