[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Alle EventHandler + Problem mit "beforeopen"

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

Alle EventHandler + Problem mit "beforeopen"

inditac
Beiträge gesamt: 45

24. Okt 2011, 11:28
Beitrag # 1 von 19
Bewertung:
(9761 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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
X

Alle EventHandler + Problem mit "beforeopen"

gfellenz
Beiträge gesamt: 120

24. Okt 2011, 12:00
Beitrag # 2 von 19
Beitrag ID: #482897
Bewertung:
(9750 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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.


als Antwort auf: [#482893]

Alle EventHandler + Problem mit "beforeopen"

inditac
Beiträge gesamt: 45

24. Okt 2011, 12:12
Beitrag # 3 von 19
Beitrag ID: #482900
Bewertung:
(9740 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

Alle EventHandler + Problem mit "beforeopen"

gfellenz
Beiträge gesamt: 120

24. Okt 2011, 12:53
Beitrag # 4 von 19
Beitrag ID: #482903
Bewertung:
(9724 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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);
}
}
}
}



als Antwort auf: [#482900]

Alle EventHandler + Problem mit "beforeopen"

inditac
Beiträge gesamt: 45

24. Okt 2011, 13:39
Beitrag # 5 von 19
Beitrag ID: #482906
Bewertung:
(9701 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

Alle EventHandler + Problem mit "beforeopen"

gfellenz
Beiträge gesamt: 120

24. Okt 2011, 14:50
Beitrag # 6 von 19
Beitrag ID: #482912
Bewertung:
(9675 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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.


als Antwort auf: [#482906]

Alle EventHandler + Problem mit "beforeopen"

inditac
Beiträge gesamt: 45

24. Okt 2011, 15:02
Beitrag # 7 von 19
Beitrag ID: #482918
Bewertung:
(9669 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

Alle EventHandler + Problem mit "beforeopen"

gfellenz
Beiträge gesamt: 120

24. Okt 2011, 16:06
Beitrag # 8 von 19
Beitrag ID: #482930
Bewertung:
(9649 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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);
}
}
}
}



als Antwort auf: [#482918]

Alle EventHandler + Problem mit "beforeopen"

inditac
Beiträge gesamt: 45

26. Okt 2011, 07:48
Beitrag # 9 von 19
Beitrag ID: #483059
Bewertung:
(9568 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

Alle EventHandler + Problem mit "beforeopen"

WernerPerplies
Beiträge gesamt: 2693

26. Okt 2011, 08:18
Beitrag # 10 von 19
Beitrag ID: #483060
Bewertung:
(9556 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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.


als Antwort auf: [#483059]

Alle EventHandler + Problem mit "beforeopen"

inditac
Beiträge gesamt: 45

26. Okt 2011, 11:06
Beitrag # 11 von 19
Beitrag ID: #483071
Bewertung:
(9522 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]

Alle EventHandler + Problem mit "beforeopen"

WernerPerplies
Beiträge gesamt: 2693

26. Okt 2011, 11:24
Beitrag # 12 von 19
Beitrag ID: #483073
Bewertung:
(9512 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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?


als Antwort auf: [#483071]

Alle EventHandler + Problem mit "beforeopen"

inditac
Beiträge gesamt: 45

26. Okt 2011, 13:24
Beitrag # 13 von 19
Beitrag ID: #483083
Bewertung:
(9491 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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)

Alle EventHandler + Problem mit "beforeopen"

WernerPerplies
Beiträge gesamt: 2693

26. Okt 2011, 13:34
Beitrag # 14 von 19
Beitrag ID: #483086
Bewertung:
(9488 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

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


als Antwort auf: [#483083]

Alle EventHandler + Problem mit "beforeopen"

inditac
Beiträge gesamt: 45

26. Okt 2011, 13:52
Beitrag # 15 von 19
Beitrag ID: #483089
Bewertung:
(9469 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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]
X

Aktuell

InDesign / Illustrator

| 23.05.2022

IDUG_300

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
01.12.2022

Online
Donnerstag, 01. Dez. 2022, 10.00 - 10.45 Uhr

Webinar

Die drei ColorLogic-Programme ZePrA, CoPrA und ColorAnt sind in neuen Versionen mit vielen neuen Funktionen im Jahr 2022 veröffentlich worden oder werden in Kürze veröffentlicht (ColorAnt 9). In unserem ca. 45 minütigen kostenlosen Webinar zeigen wir Ihnen einige dieser neuen Funktionen mit dem Schwerpunkt auf Automatisierung und Produktivitätssteigerungen.

Ja

Organisator: Impressed GmbH

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=311

ColorLogic Update-Webinar ZePrA 10, CoPrA 9 und ColorAnt 9
Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/