Lade...
 

FrameMaker ExtendScript

FrameMaker Klassen um Funktionalität anreichern

ExtendScript basiert bekanntlich auf der objektorieten Skriptsprache JavaScript und erweitert diese um das jeweilige Objektmodell und um entsprechende Zugriffsfunktionen der entsprechende Adobe Application; i.d.F. Adobe FrameMaker.
Bei der Entwicklung entstehen zahlreiche Funktionen, die ich gerne direkt der jeweiligen Klasse zuordnen möchte, ich also objektorientiert entwickeln will.
Die Objektorientierung in JavaScript(externer Link) und damit in ExtendScript wird nicht über Klassen sondern über Prototypen realisiert. Und genau die Umsetzung von Prototypen setze ich dafür ein. Das folgende Snippet erweitert das Object BodyPage um eine neue Funktion IsEmpty():
Erweiterung des BodyPage Prototypen
  1 . app.ActiveDoc.FirstBodyPageInDoc;
  2 . BodyPage.prototype.IsEmpty = function()
  3 . {
  4 .    //your code here
  5 . }
Speziell ist hier sicherlich die Zeile 1. Der Prototyp BodyPage kann erst erweitert werden, wenn erstmals ein Objekt instanziiert wurde. Dies funktioniert in diesem Fall auch, wenn wir kein aktives Dokument haben (beim Start von FrameMaker), da ESTK immer ein Objekt, wenn auch invalide, liefert, auf dem gearbeitet werden kann. Wird dieses Snippet direkt in das Startup-Verzeichnis von FrameMaker gestellt, steht nun für alle Skripts die mit BodyPages arbeiten, die Funktion IsEmpty() zur Verfügung. Somit kann die Funktion nicht nur in einem konkreten Anwendungsfall genutzt werden, sondern steht global auch zur Verwendung durch andere Skripts zur Verfügung. Eine konkrete Implementierung finden Sie im Skript Leere Seiten beim Speichern löschen. Hier wird das Objekt Doc (für ein FM Dokument) und das Objekt BodyPage entsprechend erweitert.
veröffentlicht am 24 11 2011
Drucken