[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

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

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

Hans Haesler
  
Beiträge gesamt: 5822

5. Feb 2016, 11:01
Beitrag # 1 von 19
Bewertung:
(8936 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Scripter,

ein Startup-Script wird beim Öffnen eines Dokuments gestartet.
Siehe http://www.hilfdirselbst.ch/...i?post=546437#546437

Frage: Wie kann der Dialog, welcher fehlende Schriften (und/oder Bilder) meldet, vermieden werden?

Diese Zeile im Startup-Script eingefügt ...

Code
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT; 

... kommt natürlich zu spät ...

Danke im voraus.

Gruss, Hans
X

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

WernerPerplies
Beiträge gesamt: 2711

5. Feb 2016, 11:23
Beitrag # 2 von 19
Beitrag ID: #546695
Bewertung:
(8929 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

die Aussage
Zitat beim Öffnen

ist etwas unpräzise, welchen Event benutzt Du?

BEFORE_OPEN
oder
AFTER_OPEN?


als Antwort auf: [#546694]

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

Hans Haesler
  
Beiträge gesamt: 5822

5. Feb 2016, 15:05
Beitrag # 3 von 19
Beitrag ID: #546716
Bewertung:
(8868 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

im Script steht "afterOpen". Nach Deiner Frage hoffte ich, dass "beforeOpen" die Lösung ist.

Aber: Das ist leider nicht der Fall. Im Gegenteil:
– Mit "afterOpen" werden die Schriften korrekt ausgetauscht. Auch solche, welche "fehlend" waren. Und der Dialog wird gezeigt.
– Mit "beforeOpen" kommt sofort der Dialog. Und die Schriften werden nicht ausgetauscht.

Der Anfang des Scripts:

Code
#targetengine "session" 

app.addEventListener("afterOpen", prepReplace, false);

function prepReplace(evt) {

// der Array der Schriftnamen ...
var fontsList = new Array ("Helvetica Neue LT LT 45 Light=Times New Roman Regular",
"Helvetica Neue LT LT 55 Roman=Times New Roman Italic",
"Helvetica Neue LT LT 75 Bold=Times New Roman Bold",
"Helvetica Neue LT LT 76 Bold Italic=Times New Roman Bold Italic");

// die Anzeige von Dialogen ausschalten (falls Schriften oder Bilder fehlen)
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT;

// prüfen, ob ein Dokument geöffnet wurde
if (evt.target.constructor.name == "LayoutWindow") {

// die Austausch-Funktion aufrufen
replaceFonts(fontsList);

// das Anzeigen der Dialoge aktivieren
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL;

Das Problem besteht also weiterhin.

Gruss, Hans


als Antwort auf: [#546695]

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

WernerPerplies
Beiträge gesamt: 2711

5. Feb 2016, 15:12
Beitrag # 4 von 19
Beitrag ID: #546718
Bewertung:
(8864 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hans!

Sorry ein Missverständnis.

Du kannst doch keine Schriften in einem Dokument austauschen, das nicht geöffnet ist!

Es ging um das Setzen des Flags:

userInteractionLevel


als Antwort auf: [#546716]

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

Hans Haesler
  
Beiträge gesamt: 5822

5. Feb 2016, 17:38
Beitrag # 5 von 19
Beitrag ID: #546727
Bewertung:
(8811 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Werner!

Kein Problem. :-) Und ja, klar, das Dokument muss offen sein.

Doch wenn das Umstellen des 'userInteractionLevel' auf 'NEVER_INTERACT' nicht gelingt, dann kommt der Dialog.

Okay, Björn kann damit leben. Es wäre aber gut, wenn es eine Lösung gäbe.

Ich habe jetzt noch versucht, mit einer Pause etwas zu erwirken. '$.sleep(3000)' gleich zu Beginn der Funktion.
Und dasselbe vor dem Aufruf der replace-Funktion. Hilft alles nichts. Weder beim 'beforeOpen' noch mit 'afterOpen'.

Hat jemand eine Idee für eine Lösung dieses Problems?

Hinweis: Falls gerade kein Dokument mit fehlenden Schriften vorhanden ist, dann ist es einfacher,
ein Bild zu laden und die entsprechende Datei zu löschen.

Gruss, Hans


als Antwort auf: [#546718]

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

WernerPerplies
Beiträge gesamt: 2711

5. Feb 2016, 18:07
Beitrag # 6 von 19
Beitrag ID: #546732
Bewertung:
(8792 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Hat jemand eine Idee für eine Lösung dieses Problems?

Vielleicht!
Es stellt sich natürlich die Frage. wie Dateien geöffnet werden, per Drag an Drop oder über das Menue:

Der zweite Fall ist ganz einfach:
Menueeintrag durch Skript ersetzen.

Ach ja, ich vergaß, weil von mir nie angewendet, es gibt ja noch den Doppelklick in Finder/Explorer.

Da könnte vielleicht Folgendes klappen:

Skript zum Umschalten mit Panel einrichten, als StartUp-Skript einrichten und offen lassen.

Das Fenster kann man minimieren oder ganz verstecken: Property Hidden = true;

Ohne Garantie, aber ich würde es versuchen.


als Antwort auf: [#546727]

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

Hans Haesler
  
Beiträge gesamt: 5822

5. Feb 2016, 20:31
Beitrag # 7 von 19
Beitrag ID: #546733
Bewertung:
(8740 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

ich könnte den Code in ein AppleScript-Droplet verwandeln. Oder wie schon erwähnt, in ein JavaScript, welches die Datei öffnet.

Aber in diesem Thema geht es mir ganz allgemein um die Konstellation "Startup-Script / Dokument öffnen".
Und die Frage: Kann der Dialog, welcher fehlende Schriften (oder Bilder) melden will, unterdrückt werden oder nicht?

Gruss, Hans


als Antwort auf: [#546732]

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

WernerPerplies
Beiträge gesamt: 2711

5. Feb 2016, 21:03
Beitrag # 8 von 19
Beitrag ID: #546734
Bewertung:
(8703 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hans,

Zitat Aber in diesem Thema geht es mir ganz allgemein um die Konstellation "Startup-Script / Dokument öffnen".
Und die Frage: Kann der Dialog, welcher fehlende Schriften (oder Bilder) melden will, unterdrückt werden oder nicht?

Das habe ich verstanden und einen Vorschlag gemacht, den Du testen solltest.

Ein Script programmieren, dass die Flag umschaltet und dann ein Panel-Window öffnet, das aktiv bleibt.

Wie z. B. bei fast allen meinen Skripten.

Dann eine Datei öffnen und prüfen, ob der Dialog erscheint.

Ach ja, ein Panel-Skript benötigt eine Target-Machine.

Alles klar?


als Antwort auf: [#546733]

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

WernerPerplies
Beiträge gesamt: 2711

6. Feb 2016, 07:12
Beitrag # 9 von 19
Beitrag ID: #546742
Bewertung:
(8605 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

ich habe jetzt meinen letzten Tipp ausprobiert und festgestellt- er funktioniert leider nicht.

Dann habe mir die Properties des übergebenen Events angesehen und bin zu diesem Schluss gekommen:

Code
#target indesign 
#targetengine "WpsDocumentHandlers";

app.addEventListener("beforeOpen", switchInteractionLevels);

function switchInteractionLevels(event)
{
// die Anzeige von Dialogen ausschalten (falls Schriften oder Bilder fehlen)
if (event.eventType == "beforeOpen")
event.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT;
}


Bei mir funktionierts!


als Antwort auf: [#546733]

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

Hans Haesler
  
Beiträge gesamt: 5822

6. Feb 2016, 08:32
Beitrag # 10 von 19
Beitrag ID: #546744
Bewertung:
(8570 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Werner,

ich bedanke mich für Deine Lösung.

Hier funktioniert sie auch. Aber ... nur mit 'beforeOpen'.

Mit 'afterOpen' kommt eine Meldung, welche besagt,
dass 'userInteractionLevel' nicht unterstützt wird. Siehe Anhang.

Gruss, Hans


als Antwort auf: [#546742]
Anhang:
Warnung.png (28.5 KB)

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

WernerPerplies
Beiträge gesamt: 2711

6. Feb 2016, 08:50
Beitrag # 11 von 19
Beitrag ID: #546745
Bewertung:
(8564 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Hans,

Zitat Hier funktioniert sie auch. Aber ... nur mit 'beforeOpen'.


Du verwirrst mich, hatte ich etwas anderes behauptet?

Hast Du denn mal die Properties aus dem bei 'afterOpen' übergebenen Event ausgelesen?

Gibt es da etwa dies Property?

Wenn ja, ist es beschreibbar?

Ich vermute mal nicht!

Ich vermute mal, Du möchtest jetzt den Switch nach Öffnen des Dokuments wieder zurückschalten, also in etwa die Anweisung geben:

unterdrücke die Dialoge für dieses Dokument
und nach dem Öffnen
Ich hab's mir anders überlegt!

Das hat wohl Adobe so nicht vorgesehen, ich habe jetzt direkt keine Lösung anzubieten und bin auf anderen Baustellen unterwegs, aber mit ein wenig Nachdenken solltest Du eine Lösung finden können.

Ich würde erst einmal alle Event/-Handler untersuchen und zur Not mit einer Containervariablen, Semaphore Datei oder einem Hilfsskript arbeiten.

Es gibt immer eine Lösung!


als Antwort auf: [#546744]

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

Hans Haesler
  
Beiträge gesamt: 5822

6. Feb 2016, 09:20
Beitrag # 12 von 19
Beitrag ID: #546746
Bewertung:
(8527 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

nein, Du hast nichts anderes behauptet. Und mit 'beforeOpen' gelingt das Umstellen auf 'NEVER_INTERACT'. Der Warndialog bleibt aus. Aber die Schriften werden nicht ersetzt.

Dazu braucht es 'afterOpen'. Und damit gelingt das Umstellen nicht.

Aus Zeitgründen habe ich nicbt weiter geforscht. Und jetzt bin ich unterwegs. Werde den ganzen Tag abwesend sein.

Gruss, Hans


als Antwort auf: [#546745]

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

WernerPerplies
Beiträge gesamt: 2711

6. Feb 2016, 09:26
Beitrag # 13 von 19
Beitrag ID: #546747
Bewertung:
(8517 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

wenn es nur um den Austausch der Schriften geht und nicht um das Zurückschalten, ist die Sache doch ganz einfach:

Rufe zum Umschalten "beforeOpen" auf und zum Austauschen "afterOpen"!

Oder übersehe ich etwas?


als Antwort auf: [#546746]

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

Hans Haesler
  
Beiträge gesamt: 5822

6. Feb 2016, 10:08
Beitrag # 14 von 19
Beitrag ID: #546748
Bewertung:
(8492 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

okay, werde ich heute Abend versuchen.

[ Jetzt sind wir in einem Zug und fahren dem Genfersee entlang. ]

Gruss, Hans


als Antwort auf: [#546747]

Startup-Script: Wie den Fehlende-Schriften-Dialog unterdrücken?

WernerPerplies
Beiträge gesamt: 2711

6. Feb 2016, 10:29
Beitrag # 15 von 19
Beitrag ID: #546749
Bewertung:
(8460 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

ok, dann gebe ich Dir für heute Abend noch etwas auf den Weg.

Das Problem hat mich nicht losgelassen, und ich den denke, da gibt es einen kleinen Bug:

"afterOpen" wird zweimal aufgerufen!
Schau Dir das an:

Code
#target indesign 
#targetengine "WpsDocumentHandlers";

app.addEventListener("beforeOpen", switchInteractionLevels);
app.addEventListener("afterOpen", switchInteractionLevelsBack);
function switchInteractionLevels(event)
{
// die Anzeige von Dialogen ausschalten (falls Schriften oder Bilder fehlen)
if (event.eventType == "beforeOpen")
{
event.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT;
}
}
function switchInteractionLevelsBack(event)
{
if (event.eventType == "afterOpen")
{
if ("userInteractionLevel" in event)
// 1. Durchlauf
event.userInteractionLevel= UserInteractionLevels.INTERACT_WITH_ALL;
else
{
// 2. Durchlauf
// hier sollte das mit dem Schriftentausch klappen!
}
}
}



als Antwort auf: [#546748]
X