Login

Learning & Support

Documentation

Scripting the Twixl Publisher plug-in

Twixl Support Team Updated: - Created :

This article expects that you are familiar with Adobe's ExtendScript scripting language.

1. InDesign ExtendScript Labels

The way the Twixl Publisher plug-in stores the interactive properties is by attaching labels to the different elements.

Every object in Adobe InDesign can be provided with one or more labels via de ExtendScript function:

object.insertLabel(key, value)

To retrieve the label, you can use the extractLabel function using a specific key:

object.extractLabel(key)

2. Attaching properties

Here's an overview of the type of InDesign elements you can attach properties to, depending on the type of interactive element:

  1. Slide Show: MultiStateObject
  2. Web Viewer: Rectangle
  3. Web Overlay: Rectangle, TextFrame, PageItem
  4. Scrollable Content: Rectangle with one PageItem as its child element
  5. Full screen image: Graphic
  6. Movie: Movie
  7. Sound: Sound
  8. Image Sequence: Rectangle

3. Twixl Publisher interactive element keys

Every type of Twixl Publisher interactive element has its own key under which the properties are saved. Here's an overview:

Slide Show
com.rovingbird.epublisher.mso
Web Viewer
com.rovingbird.epublisher.wv
Web Overlay
com.rovingbird.epublisher.wo
Scrollable Content
com.rovingbird.epublisher.sc
Full screen image
com.rovingbird.epublisher.image
Movie
com.rovingbird.epublisher.movie
Sound
com.rovingbird.epublisher.sound
Image Sequence
com.rovingbird.imagesequence

4. JSON

Under these keys, all properties are saved in a JSON data structure. JSON (http://www.json.org) is a text based format which makes it very easy to store key/value structures.

var myProperties = {
    key1: “value",
    key2: “value",
    key3: “value"
};
var myJsonString = JSON.stringify(myProperties);
myObject.insertLabel("com.rovingbird.epublisher.mso", myJsonString);

To retrieve it later on, you can use the following code:

var myLabel = myObject.extractLabel("com.rovingbird.epublisher.mso");
var myProperties = JSON.parse(myLabel);

5. Property overview

5.1. Slide Show

{
    'msoShowScrollViewIndicator':            false,
    'msoAllowUserInteraction':               false,
    'msoShowScrollbars':                     false,
    'msoAllowFullScreen':                    false,
    'msoScrollViewIndicatorOpacity':         50,
    'msoScrollViewIndicatorBackgroundColor': '000000',
    'msoScrollViewIndicatorActiveColor':     'FFFFFF',
    'msoScrollViewIndicatorInactiveColor':   'AAAAAA',
    'msoFileFormat':                         'PNG',
    'msoFileFormatIdx':                      0,
    'msoFileFormatDesc':                     '',
    'msoTransitionStyle':                    'Push',
    'msoTransitionStyleIdx':                 0,
    'msoAllowAutoPlay':                      false,
    'msoInterval':                           0,
    'msoDelay':                              0,
    'msoTapPlayPause':                       false,
    'msoAllowLoop':                          false,
}

5.2. Web Viewer

{
    'wvUrl':                  '',
    'wvAllowUserInteraction': false,
    'wvTransparent':          false,
    'wvScaleToFit':           false,
    'wvShowScrollbars':       false,
    'wvOpenLinksInline':      true,
    'wvShowLoadingIndicator': false,
}

5.3. Web Overlay

{
    'woUrl':                  '',
    'woAllowUserInteraction': false,
    'woWidth':                '',
    'woHeight':               '',
    'woShowScrollbars':       false,
    'woShowLoadingIndicator': false,
    'woBackgroundColor':      '000000',
    'woBackgroundOpacity':    50,
    'woAnalyticsName':        '',
    'woScaleToFit':           false,
}

5.4. Scrollable Content

{
    'scAllowScrolling': false,
    'scShowScrollbars': true,
    'scEnablePaging':   false,
    'scEnableZooming':  false,
}

5.5. Movies

{
    'movieAutoStart':           false,
    'movieShowController':      false,
    'movieLoop':                false,
    'movieShowFullScreen':      false,
    'movieReturnToPosterFrame': false,
    'movieAnalyticsName':       '',
}

5.6. Sound

{
    'soundAutoStart':     false,
    'soundLoop':          false,
    'soundAnalyticsName': '',
}

5.7. Full Screen Images

{
    'imageAllowFullScreen': false,
    'imageAnalyticsName':   '',
}

5.8. Image Sequences

{
    'isqFolder':        '',
    'isqReverse':       false,
    'isqAnalyticsName': '',
}

6. Automating preflight, export and preview

Download an example (for .article and .publication files) to see how the preflight, export and preview processes can be scripted:

Was this article helpful?

0 out of 1 found this helpful