ExtendScript: Dokumentation stark verbessert

Vor wenigen Tagen hat das Team von Adobe zwei wichtige Ergänzungen für zukünftige (und sich schon jetzt damit plagende) Skript-Programmierer veröffentlicht:

  • Eine vervollständigte omv.xml. Dies ist eine Datenbeschreibungsdatei für den Object Model Viewer, eine Online-Syntax-Referenz für die ExtendScript-Anbindung an FrameMaker, die mit dem ExtendScript Toolkit (ESTK) genutzt wird.
  • Den Adobe FrameMaker 10 Scripting Guide, der die Inhalte der omv.xml plus einige grundlegende Informationen enthält. Ja, die omv.xml wird aus den Quellen der PDF-Datei erzeugt…

Natürlich gibt es weiterhin Arbeitsbedarf bzw. benötigen Programmierer Vorkenntnisse, entweder aus dem FDK- oder dem FrameScript-Umfeld. Die Eigenschaften und möglichen Methoden der FrameMaker-Objekte (AFrame, Inset, TextRange, …) sind nun (wohl) alle beschrieben, es fehlen aber Erläuterungen zu den Objekten selbst. Die Links und Installationsbeschreibung finden sich hier:

Noch ein Tipp: Das sehr wichtige Session-Objekt heißt in ExtendScript app und wird am Ende der Objektliste aufgeführt. Die wirklich globalen Methoden finden sich im Objektmodell-Viewer bei G unter Globals, im PDF aber noch hinter app unter global. Ach ja, in der PDF-Fassung ist auch nicht alles alphabetisch sortiert, manchmal muss man etwas tiefer in der Lesezeichen-Liste suchen.

ExtendScript-Forum

In den Adobe Anwender-Foren zu FrameMaker gibt es neben den Bereichen Feature Requests, Technical Communications Suite Installer, FAQ, General Discussion und Structured seit einiger Zeit auch den neuen Bereich namens FrameMaker Scripting, indem es natürlich (nur) um die ExtendScript-Programmierung geht. Wer in diesem Bereich erste Schritte geht, sollte sich das Forum als Lesezeichen merken, oder den Link hier in der Seitenleiste verwenden.

FrameScript / ElmScript 5.2R1p245

Dieses Bugfix-Update betrifft alle Versionen von FrameScript 5.2R1 für alle FrameMaker-Versionen. Damit wird ein Fehler beim Kommando Find FromTextLoc behoben, der alle FrameMaker-Versionen außer Version 10 betraf und in Release p241 auftauchte. Gegenüber dem zumindest für FrameMaker 10 fehlerfreien Relase p243 wurde in p244 das Kommando New AttrCondExpr hinzugefügt.

  • p241 Updates for FrameMaker 10.
  • p242 Fixes for the grid control
  • p243 Unicode compare error fixed
  • p244 Added the New AttrCondExpr command for Fm8 and greater
  • p245 Fixes for a bug with the Find FromTextLoc command (finding objects). This bug was introduced in build p241.

Weitere Details entnehmen Sie bitte der Datei WhatsNew.pdf.

Hinweise:

  • Wenn Sie bereits eine ältere Version von FrameScript 5.x installiert haben, müssen Sie diese nicht deaktivieren.
  • Für die Online-Aktivierung muss .NET auf dem Rechner installiert sein und Sie benötigen Administrator-Rechte.

Bug-Warnung

Das Patch-Release 5.2R1p241 hat die Kompatibilität zu FrameMaker 10 hergestellt. Dabei wurde für ältere FrameMaker-Versionen ein Bug implementiert, der den Befehl Find FromTextLoc betrifft: Es gibt Fehlermeldungen bei einigen Objekt-Typen, zum Beispiel AFrame. Der folgende Befehl wird zum Beispiel als fehlerhaft abgewiesen:

Find FromTextLoc(lvTloc) AFrame ReturnRange(lvRange);

Das Problem betrifft nur FrameMaker 9 oder früher und nur die Releases 5.2R1p241 oder später.

Ein Update ist in Arbeit.

Gestrichelte Linien in Tabellen

Eigentlich geht das nicht. Aber uneigentlich lässt sich für manche Fälle etwas mogeln, denn zu den Linieneigenschaften gehört neben Farbe (.Color) und Dicke (.Borderwidth) auch .Pen: Mit dieser Angabe wird einer der 16 Werte gewählt, der auch auf der Grafiken-Toolbar angeboten wird: Die ersten 8 (Werte 0…7) sind die Graustufen von 100% (Konstante: FillBlack) bis 0% (FillWhite), dann folgen sieben Muster (Werte 8…14), bevor es mit »keine Linie« (FillClear) abschließt. Und mit Hilfe dieser Muster kann man gestrichelte Linien simulieren, zugegeben mit wenig Einstellvarianten. Um dies on-the fly in einem Dokument für den Lineatur-Still »Blau« auszuprobieren, reicht folgendes kleine Skript:

Set lvObj = ActiveDoc.FirstRulingFmtInDoc;
Loop While(lvObj)
 If (lvObj.Name = 'Blau')
   Set lvObj.Pen = 11; // Werte von 8...14 ergeben gestrichelt
   Display lvObj.Properties;
 EndIf
 Set lvObj = lvObj.NextRulingFmtInDoc;
EndLoop

Ohne FrameScript geht es auch in der MIF-Datei, dort sieht es z.B. so aus:

<Ruling
 <RulingTag `Blau'>
 ...
 <RulingPen 11>
 <RulingLines 1>
># end of Ruling

Wie die Muster aussehen, kann von den Einstellungen des Druckertreiber abhängen, sollte sich in einer einmal erstellten PDF-Datei dann aber nicht mehr ändern. Bei den Mustern 10 (senkrecht) und 11 (waagrecht) kann es je nach Liniendicke bei vertikalen bzw. horizontalen Linien zu Ausfällen kommen. Hier eine Beispieldatei, die auch die verschiedenen Muster-Optionen zeigt: Gestrichelte Linien