Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

Stephan_M
Beiträge gesamt: 480

20. Nov 2021, 17:48
Bewertung:

gelesen: 9615

Beitrag als Lesezeichen
Hallo,

Ich habe in der Forum-Suche alle alten Posts mit "BeforeExport" gefunden, aber keine Lösung erhalten.

Ich versuche mit einem BeforeExport-Event in Indesign vor der Erzeugung eines PDF noch schnell die Einstellung für die PDF-Seitenanzeige (app.pdfExportPreferences.pdfPageLayout) zu ändern. Ich versuche zu automatisieren ob es "Doppelseiten-Darstellung", oder "Doppelseiten-mit-Cover-Darstellung" einstellt, je nachdem ob die .pageRange mit einer ungerade oder geraden Seiten beginnt.

Leider kommt die Umstellung des pdfPageLayout zu spät. Dieses Skript unten funktioniert beinahe - es stellt das application.pdfPageLayout auf das richtige gewünschte Format um, aber das PDF ist dann bereits erzeugt, mit der noch alten/falschen Einstellung.

Scheinbar ist das Export-Event schon unterwegs/abgefeuert und ich müsste eher die Einstellung des gerade alufenden Export(-Events) ??? ändern, anstatt application.pdfPageLayout. Leider hat das Event aber keine solche pdfExportPreferences-property die ich ändern könnte.

Außerdem habe ich Schwierigkeiten beim skripten, weil Adobe das Objektmodel aus ExtendScriptToolkit ausgebaut hat und weil es nicht mehr zur Laufzeit die Objekte untersuchen kann. Wie programmiert Ihr denn heute eigentlich Indesign Skripte?

Code
#targetengine "session" 

pageLayoutOnExport();

function pageLayoutOnExport(){
var myApplicationEventListener = app.eventListeners.add("beforeExport", setPageLayout);
}

function setPageLayout(myEvent){
myExportFileName = myEvent.properties.fullName.toString();
myExportSuffix = myExportFileName.substring(myExportFileName.lastIndexOf("\."), myExportFileName.length);

if (myExportSuffix == '.pdf') {
theRange = app.pdfExportPreferences.pageRange.replace(/(^\d+)(.+$)/i,'$1');
// alert(theRange + " " + myEvent.properties.toSource());
// myEventInfo(myEvent)
if (app.pdfExportPreferences.pdfPageLayout == PageLayoutOptions.TWO_UP_COVER_PAGE || app.pdfExportPreferences.pdfPageLayout == PageLayoutOptions.TWO_UP_FACING) {
// myDoc = myEvent.parent;
if (parseInt(theRange)%2 == 1) {
alert('was odd: setting WITH COVERPAGE');
app.pdfExportPreferences.pdfPageLayout = PageLayoutOptions.TWO_UP_COVER_PAGE;
}
else {
alert('was even: setting DOUBLE PAGES');
app.pdfExportPreferences.pdfPageLayout = PageLayoutOptions.TWO_UP_FACING;
}
}
}
}

Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

WernerPerplies
Beiträge gesamt: 2763

21. Nov 2021, 07:53
Bewertung:

gelesen: 9585

Beitrag als Lesezeichen
Moin,

Zitat Außerdem habe ich Schwierigkeiten beim skripten, weil Adobe das Objektmodel aus ExtendScriptToolkit ausgebaut hat und weil es nicht mehr zur Laufzeit die Objekte untersuchen kann.

Habe ich nie benutzt:
Mir fallen da zwei Möglichkeiten ein:
1. Breakpoint und Konsolenfenster
2. Ganz vornehm:
Meldungen über ein nicht modales Fenster ausgeben. Ich verwende dafür ein MultilineEdit.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

Stephan_M
Beiträge gesamt: 480

21. Nov 2021, 18:52
Bewertung:

gelesen: 9493

Beitrag als Lesezeichen
Zitat 1. Breakpoint und Konsolenfenster


Das ist ja der Haken, ich kann keine Verbindung zwischen ESTK und Indesign mehr herstellen, um während der Laufzeit Objekte zu untersuchen.
Das Nicht-Modale Fenster, ja, ich brächte zwei Wochen um das ans Laufen zu kriegen.
Naja, sollte nur ne kleine Bastelei sein. Nicht so wichtig.
Danke, Werner.

Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

Martin Fischer
  
Beiträge gesamt: 12783

21. Nov 2021, 22:03
Bewertung:

gelesen: 9457

Beitrag als Lesezeichen
Hallo Stephan,

Zitat von Stephan_M Außerdem habe ich Schwierigkeiten beim skripten, weil Adobe das Objektmodel aus ExtendScriptToolkit ausgebaut hat und weil es nicht mehr zur Laufzeit die Objekte untersuchen kann. Wie programmiert Ihr denn heute eigentlich Indesign Skripte?


Eine Alternative zu ExtendScript Toolkit ist Visual Studio Code
in Kombination mit der Extension ExtendScript Debugger.

Siehe auch Announcing ExtendScript Debugger for Visual Studio Code.

Viele Grüße
Martin


Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

Stephan_M
Beiträge gesamt: 480

22. Nov 2021, 02:25
Bewertung:

gelesen: 9427

Beitrag als Lesezeichen
Oh, vielen Dank, das sieht vielversprechend aus, ich glaube das kriege ich ans laufen (den vielen schlechten Bewertungen der ESTK-Debugger-Erweiterung zum Trotz). Arbeitest Du damit, Martin?

Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

Martin Fischer
  
Beiträge gesamt: 12783

22. Nov 2021, 08:07
Bewertung:

gelesen: 9367

Beitrag als Lesezeichen
VSC schätze ich besonders als mächtigen, erweiterbaren und anpassungsfähigen Editor.

Und wenn sich der Debugger mal verheddert, dann ist in der Regel nach einem Neustart von VSC und/oder InDesign alles wieder gut.

Andersherum gefragt: gibt es eine (vergleichbare) Alternative?

Viele Grüße
Martin


Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

Uwe Laubender
Beiträge gesamt: 5319

22. Nov 2021, 09:32
Bewertung:

gelesen: 9347

Beitrag als Lesezeichen
Zitat von Stephan Das ist ja der Haken, ich kann keine Verbindung zwischen ESTK und Indesign mehr herstellen, um während der Laufzeit Objekte zu untersuchen.


Hallo Stephan,
mit welcher Version von InDesign und mit welchem Betriebssystem bist Du unterwegs?

Übrigens: Es wird hoffentlich bald eine neue Version des Debuggers für VSCode geben. Macht euch mal im Prerelease schlau.

How to Join Creative Cloud Prerelease Programs
Erin Finnegan, Oct 18, 2019

https://medium.com/...rograms-ccecc10ae7d3
*****
Mit herzlichem Gruß,
Uwe Laubender

Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

WernerPerplies
Beiträge gesamt: 2763

22. Nov 2021, 10:08
Bewertung:

gelesen: 9335

Beitrag als Lesezeichen
Moin,

irgend etwas muss mir entgangen sein, ich habe jetzt extra die 2022 installiert und für mich funktioniert alles wie gehabt:

Editieren in VSCode und ESTK-Editor, debuggen im ESTK-Editor.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

Martin Fischer
  
Beiträge gesamt: 12783

22. Nov 2021, 10:31
Bewertung:

gelesen: 9307

Beitrag als Lesezeichen
Antwort auf [ Werner Perplies ] Editieren in VSCode und ESTK-Editor, debuggen im ESTK-Editor.


Vermutlich sind nur die Mac-Versionen von der Einstellung der Unterstützung des ESTK (Ausschluss der Unterstützung von 32-Bit Programmen seit macOS 10.15) betroffen.


Zitat von Adobe Tech Blog Apple just recently released macOS 10.15 Catalina. As has been telegraphed for a few macOS versions, 32-bit applications no longer work on Catalina. ExtendScript Toolkit (a standalone 32-bit application for creating and debugging scripts for flagship Creative Cloud applications) will not launch or function on machines that have macOS Catalina installed.
To address the fact that ESTK is a 32-bit application, we created and released the VSCode ExtendScript Debugger plugin earlier this year.

ESTK and macOS 10.15 Catalina

Viele Grüße
Martin


Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

WernerPerplies
Beiträge gesamt: 2763

22. Nov 2021, 10:37
Bewertung:

gelesen: 9301

Beitrag als Lesezeichen
Ok, das erklärt warum ich keine Probleme habe.
Danke.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

Stephan_M
Beiträge gesamt: 480

2. Dez 2021, 14:30
Bewertung:

gelesen: 9001

Beitrag als Lesezeichen
@Werner Perplies
Sie sagen Ihr ESTK CC in Windows10 bekommt kein komische Verhalten bei dem Versuch im "Objekt-Modell-Viewer" das Objektmodel "Indesign 2022" aufzurufen? ihr ESTK stürzt nicht ab, wenn Sie ein Script mit #target "InDesign" versuchen Zeile-für-Zeile auszuführen?
Das läuft alles bei Ihnen noch?

Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

WernerPerplies
Beiträge gesamt: 2763

2. Dez 2021, 14:38
Bewertung:

gelesen: 8992

Beitrag als Lesezeichen
Moin,

Zitat Sie sagen Ihr ESTK CC in Windows10 bekommt kein komische Verhalten bei dem Versuch im "Objekt-Modell-Viewer" das Objektmodel "Indesign 2022" aufzurufen? ihr ESTK stürzt nicht ab, wenn Sie ein Script mit #target "InDesign" versuchen Zeile-für-Zeile auszuführen?
Das läuft alles bei Ihnen noch?


Ja, es gibt aber eine Auffälligkeit seit einigen InDesign-Versionen (seit wann genau weiß ich nicht):
Beim erstmaligem Laden eines InDesign-Objektes bleibt das ESTK vermeintlich beim Laden hängen, nach Beenden des ESTKs und erneutem Programmstart funktioniert alles wie erwartet.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

Stephan_M
Beiträge gesamt: 480

2. Dez 2021, 15:10
Bewertung:

gelesen: 8961

Beitrag als Lesezeichen
Besten Dank für die Infos. Ich versuch's mal mit Neuinstallation :/

Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

Uwe Laubender
Beiträge gesamt: 5319

3. Dez 2021, 11:59
Bewertung:

gelesen: 8851

Beitrag als Lesezeichen
Zitat von Werner Beim erstmaligem Laden eines InDesign-Objektes bleibt das ESTK vermeintlich beim Laden hängen, nach Beenden des ESTKs und erneutem Programmstart funktioniert alles wie erwartet.


Hallo Werner,
das habe ich auch schon beobachtet.
Ich hab' mal eine geschlagene Viertelstunde gewartet, dass mir das ESTK endlich das Ende des Ladevorgangs des Objektmodells anzeigt. Das graue Verknüpfungssymbol wollte nicht grün werden.

Beim nächsten Aufruf des ESTKs war's einfach vollständig geladen.
*****
Mit herzlichem Gruß,
Uwe Laubender

Event "BeforeExport" das pdfPageLayout ändert kommt zu spät

Dirk Becker
Beiträge gesamt: 193

5. Dez 2021, 21:40
Bewertung:

gelesen: 8585

Beitrag als Lesezeichen
Hallo Stephan,

event-uell funktionieren die üblichen Kandidaten (kann das gerade nicht ausprobieren):

event.stopPropagation();
event.preventDefault();

Danach kann das Script den Export nochmal ausführen, man sollte dann natürlich den Eventhandler vermeiden ...

Grüße,
Dirk