[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Auf welche Seite wurde zuletzt geklickt?

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

Auf welche Seite wurde zuletzt geklickt?

peterhenrich
Beiträge gesamt: 139

4. Jan 2019, 15:12
Beitrag # 1 von 26
Bewertung:
(5182 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo HDS,

ich habe ein Script erstellt, dass mir Texte aus einer Word-Datei positioniert und anhand den Spaltenvorgaben der aktuellen Seiten als einzelne miteinander verketteten Textblöcke positioniert. So weit, so schön ...

Allerdings greife ich die Seite, auf der mit dem Positionieren angefangen werden soll, über app.activeWindow.activePage ab, was zu keinem befriedigenden Ergebnis führt, da ID und ich unterschiedliche Ansichten über das Thema haben.

Mir wäre es am liebsten, dass ich mit der Maus auf eine beliebige Seite klicke und das Script dann dort startet. Derzeit ist es so, dass ID die Seite nimmt, die (frei übersetzt) am "meisten vorne" ist. Auch mit rechts und links gibt es Probleme.

Nun die Frage: Gibt es einen Eventhandler oder ähnliches, über dessen Eigenschaften/Funktionen man den letzten Klick abfragen kann?

Fragt sich und Euch ...

Peter
X

Auf welche Seite wurde zuletzt geklickt?

Uwe Laubender
Beiträge gesamt: 5319

4. Jan 2019, 15:37
Beitrag # 2 von 26
Beitrag ID: #568300
Bewertung:
(5166 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,
Idee:

Das Skript erstellt temporär einen Rechteckrahmen, der als IDMS-Datei exportiert wird und anschließend in die Placegun geladen wird. Klickst Du nun auf eine Seite wird dort der Rahmen erstellt. Die Seite ist direkt auslesbar über app.selection[0].parentPage.


als Antwort auf: [#568297]

Auf welche Seite wurde zuletzt geklickt?

Martin Fischer
  
Beiträge gesamt: 12783

4. Jan 2019, 16:22
Beitrag # 3 von 26
Beitrag ID: #568301
Bewertung:
(5150 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

Antwort auf: Das Skript erstellt temporär einen Rechteckrahmen, der als IDMS-Datei exportiert wird und anschließend in die Placegun geladen wird.


Coole Idee!
Im Prinzip kann der Text der Worddatei gleich da rein importiert werden.
Das behalte ich mir im Hinterkopf.

IDMS scheint heute Dein Thema zu sein. Smile


als Antwort auf: [#568300]
(Dieser Beitrag wurde von Martin Fischer am 4. Jan 2019, 16:28 geändert)

Auf welche Seite wurde zuletzt geklickt?

Uwe Laubender
Beiträge gesamt: 5319

4. Jan 2019, 16:29
Beitrag # 4 von 26
Beitrag ID: #568302
Bewertung:
(5143 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Genausogut könntest Du als Auswahlwerkzeug das Seitenwerkzeug nehmen.
app.selection[0] gibt dann die ausgewählte Seite zurück.

Falls Du auf einer Auswahl der Seite im Seitenmenü bestehst, dann schau' Dir mal meine Beiträge zum Thema im amerikanischen InDesign-Scripting-Forum an:

Correct Answer 6. Re: active page vs selected page
Laubender Jan 15, 2017 4:54 PM (in response to Laubender)
https://forums.adobe.com/message/9264014#9264014

Mit InDesign CS6, und nur mit CS6, gibt's eine saubere Lösung:

4. Re: active page vs selected page
Laubender Jan 13, 2017 11:53 AM (in response to Laubender)
https://forums.adobe.com/message/9259728#9259728


als Antwort auf: [#568300]

Auf welche Seite wurde zuletzt geklickt?

Martin Fischer
  
Beiträge gesamt: 12783

4. Jan 2019, 16:34
Beitrag # 5 von 26
Beitrag ID: #568303
Bewertung:
(5142 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Allerdings gibt es auch den Befehl "app.activeDocument.placeGuns.loadPlaceGun(FILE)".

Warum nicht gleich auf diese Weise laden, sondern über den IDMS-Umweg?


als Antwort auf: [#568301]
(Dieser Beitrag wurde von Martin Fischer am 4. Jan 2019, 16:37 geändert)

Auf welche Seite wurde zuletzt geklickt?

peterhenrich
Beiträge gesamt: 139

4. Jan 2019, 16:36
Beitrag # 6 von 26
Beitrag ID: #568304
Bewertung:
(5140 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Und noch eine Frage:

Wie halte ich mein Script an, bis die PlaceGun positioniert wurde?

Bei Dateipositionierungen kann ich über true/false abfragen. Derzeit wird zwar meine PlaceGun geladen, aber im Hintergund arbeitet mein Script weiter und will auf das rectangle zugreifen, das sich aber noch in der PlaceGun befindet.


als Antwort auf: [#568303]

Auf welche Seite wurde zuletzt geklickt?

Martin Fischer
  
Beiträge gesamt: 12783

4. Jan 2019, 16:47
Beitrag # 7 von 26
Beitrag ID: #568305
Bewertung:
(5130 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Wie halte ich mein Script an, bis die PlaceGun positioniert wurde?


Theoretisch kannst Du den Status "placeGuns.loaded" abfragen.

Praktisch kannst Du das Skript aber nach dem Laden der PlaceGun nicht unterbrechen, um zwischenrein 'was abzulegen und dann mit dem Skript fortzufahren - oder doch?


als Antwort auf: [#568304]

Auf welche Seite wurde zuletzt geklickt?

Uwe Laubender
Beiträge gesamt: 5319

4. Jan 2019, 16:47
Beitrag # 8 von 26
Beitrag ID: #568306
Bewertung:
(5127 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Und noch eine Frage:
Wie halte ich mein Script an, bis die PlaceGun positioniert wurde?…


Gute Frage. Wie wär's mit einem eventlistening-Mechanismus, der nach afterPlace schaut? Das Objekt in der placegun könnte einen speziellen Namen enthalten, falls sich der Anwender entscheidet nach dem Skriptstart noch mehr Objekte zu laden.


als Antwort auf: [#568304]

Auf welche Seite wurde zuletzt geklickt?

peterhenrich
Beiträge gesamt: 139

4. Jan 2019, 17:14
Beitrag # 9 von 26
Beitrag ID: #568307
Bewertung:
(5117 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf:
Antwort auf: Wie halte ich mein Script an, bis die PlaceGun positioniert wurde?


Theoretisch kannst Du den Status "placeGuns.loaded" abfragen.

Praktisch kannst Du das Skript aber nach dem Laden der PlaceGun nicht unterbrechen, um zwischenrein 'was abzulegen und dann mit dem Skript fortzufahren - oder doch?


Das wäre unschön, da diese Word-Positioniererei halt x-mal am Tag durchgeführt wird. Hatte es gerade mal so probiert:

Code
	app.activeDocument.placeGuns.loadPlaceGun(snippetFile); 
while(app.activeDocument.placeGuns.loaded) {
var i = 1; //mach irgendwas
}


Das funktioniert aber nicht, da der Zustand trotz Klicks in ID sich nicht ändert. ESTK bleibt dann in der while-Schleife hängen.

Werde mich wohl, wie von Uwe vorgeschlagen, mit Event-Listener beschäftigen müssen ... hrmpf!


als Antwort auf: [#568305]

Auf welche Seite wurde zuletzt geklickt?

peterhenrich
Beiträge gesamt: 139

5. Jan 2019, 15:33
Beitrag # 10 von 26
Beitrag ID: #568312
Bewertung:
(5006 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Habe mich jetzt mal mit den EventListenern beschäftigt und es so gelöst:

Code
#target indesign-10 
#targetengine "mySession"

var gO = {};

main();

function main() {
var newRect = app.activeWindow.activePage.rectangles.add();
var rectFile = File("~/Desktop/rec.idms")
newRect.exportFile(ExportFormat.INDESIGN_SNIPPET, rectFile);
newRect.remove();
gO.placeGunListenerID = app.activeDocument.eventListeners.add("afterPlace", listenerTest).id;
app.activeDocument.placeGuns.loadPlaceGun(rectFile);
$.writeln("Fertig mit Hauptprogramm");
}

function listenerTest () {
$.writeln("Aufruf des weiteren Teils nach der Platzierung");
if(app.activeDocument.eventListeners.itemByID(gO.placeGunListenerID).isValid) {
app.activeDocument.eventListeners.itemByID(gO.placeGunListenerID).remove();
}
}


Hierzu gleich wieder zwei Fragen:
1) Wie kann ich das ohne diese globale Variable lösen? Würde eigentlich gerne die Listener-ID in die aufgerufene Funktion übergeben.
2) Kann man eine targetEngine zurücksetzen?


als Antwort auf: [#568307]

Auf welche Seite wurde zuletzt geklickt?

WernerPerplies
Beiträge gesamt: 2762

5. Jan 2019, 17:12
Beitrag # 11 von 26
Beitrag ID: #568315
Bewertung:
(4992 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Peter,

so ganz habe ich die Funktion Deined Skriptes nicht verstanden, und Dein Listener wird am Ende nicht gelöscht.

Ich habe Deinen Code etwas umgeschrieben:

Code
  
#target indesign-13
#targetengine "mySession"

placeGunTest = new PlaceGunTest();
alert(placeGunTest);
placeGunTest.removeListener();
placeGunTest = undefined;
PlaceGunTest = undefined;
alert(PlaceGunTest==undefined);
alert(placeGunTest==undefined);
/*Object*/function PlaceGunTest()
{
var /*Rectangle*/newRect = app.activeWindow.activePage.rectangles.add(),
/*File*/rectFile = File("~/Desktop/rec.idms"),
/*Int*/placeGunListener;
newRect = app.activeWindow.activePage.rectangles.add();
newRect.exportFile(ExportFormat.INDESIGN_SNIPPET, rectFile);
newRect.remove();
/*EventListener*/placeGunListener = app.activeDocument.eventListeners.add("afterPlace", listenerTest);
app.activeDocument.placeGuns.loadPlaceGun(rectFile);
$.writeln("Constructor executed");
function listenerTest () {
$.writeln("Aufruf des weiteren Teils nach der Platzierung");
}
this.removeListener = function(){
if(placeGunListener != null)
placeGunListener.remove();
}
}


Ich erzeuge in der Funktion PlaceGunTest ein Object mit Constructor, der Deinen Code ausführt und die Methode removeListener zum Löschen des Listeners zur Verfogung stellt.
Damit ereiche ich, dass alle Variablen innerhalb des Objektes sichtbar sind und Methode removeListener von außen aufzurufen ist.
Code
placeGunTest = new PlaceGunTest(); 


erzeugt ein neues Objekt in placeGunText und führt den Constructorbereich aus.
Code
placeGunTest.removeListener(); 


entfernt den eventListener,
Code
placeGunTest = undefined; 
PlaceGunTest = undefined;


sollte den Speicher bei der nächsten Ausführung des Garbage Collectors wieder freigeben.
Antwort auf: Kann man eine targetEngine zurücksetzen?


Meines Wissens nach nur durch Neustart von InDesign.
HTH


als Antwort auf: [#568312]

Auf welche Seite wurde zuletzt geklickt?

peterhenrich
Beiträge gesamt: 139

5. Jan 2019, 17:20
Beitrag # 12 von 26
Beitrag ID: #568316
Bewertung:
(4989 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,
Danke erstmal und ich habe das mal ausprobiert. Bei Deinem Vorschlag wird in der ESTK-Konsole zwar "Constructor executed" ausgegeben, nicht aber "Aufruf des weiteren Teils nach der Platzierung". Deutet für mich darauf hin, dass die Funktion listenerTest nicht ausgeführt wird. In dieser will ich aber den ganzen anderen Kram nach der Positionierung ausführen.

Viele Grüße

Peter


als Antwort auf: [#568315]

Auf welche Seite wurde zuletzt geklickt?

WernerPerplies
Beiträge gesamt: 2762

5. Jan 2019, 17:31
Beitrag # 13 von 26
Beitrag ID: #568317
Bewertung:
(4985 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

dann lass mal die Zeile
Code
placeGunTest.removeListener 


weg! ;-)
Und wenn Du wirklich nur die Seite brauchst, kann man da natürlich noch einiges verbessern.
Der Listener darf erst entfernt werden, wenn die Platzierung erfolgt ist.
Ich würde ihn also nur einmal laden und erst entfernen, wenn die komplette Arbeit abgeschlossen ist.


als Antwort auf: [#568316]

Auf welche Seite wurde zuletzt geklickt?

peterhenrich
Beiträge gesamt: 139

5. Jan 2019, 17:46
Beitrag # 14 von 26
Beitrag ID: #568318
Bewertung:
(4975 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf:
Antwort auf: Und noch eine Frage:
Wie halte ich mein Script an, bis die PlaceGun positioniert wurde?…


Gute Frage. Wie wär's mit einem eventlistening-Mechanismus, der nach afterPlace schaut? Das Objekt in der placegun könnte einen speziellen Namen enthalten, falls sich der Anwender entscheidet nach dem Skriptstart noch mehr Objekte zu laden.


Hallo Uwe,

wie weise ich denn dem platzierten Objekt einen Namen zu oder kann es identifizieren?

Das Resultat aus loadPlaceGun ist undefined und ich kann der Funktion nur die Datei und true/false für das Zeigen des Öffnen-Dialogs übergeben.

Viele Grüße

Peter


als Antwort auf: [#568306]

Auf welche Seite wurde zuletzt geklickt?

WernerPerplies
Beiträge gesamt: 2762

5. Jan 2019, 18:05
Beitrag # 15 von 26
Beitrag ID: #568319
Bewertung:
(4964 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Peter,

das platzierte Objekt ist bei mir selectiert, Du kannst also app.selection[0] einen Namen, oder besser ein Label zuweisen.
Mit dem hinzufügen eines Labels kannst Du auch mehrere Informationen hinterlassen.


als Antwort auf: [#568318]
X

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
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

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

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

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

Und es geht doch: Automatisierung im Großformatdruck!