Turbo-Boost For InDesign ExtendScript
Active Page Item Developer resolves the shortcomings that make ‘pure’ ExtendScript less viable for professional development.
How does Active Page Item Developer (APID) enhance ExtendScript?
- With Active Page Item Developer (APID), you can convert your solution to an encrypted form that is disguised as a plug-in, embedded into a document, or as a run-only standalone ExtendScript. These encrypted scripts behave pretty much like compiled plug-ins.
- For optional copy protection, APID provides a licensing system that ties into the InDesign serial number. The end-user needs a proper license from you before the scripts can be executed. You can also provide your potential customers with a time-limited demo of your solution.
- This protection scheme works both for stand-alone ExtendScripts and for so-called ‘scripted plug-ins’.
- Standard ExtendScripts without APID are ‘naked’ – i.e. if you create a solution in ExtendScript without APID, your users would be able to freely open, inspect, copy, modify the scripts.
- APID defines an ‘event model’, where one page item can ‘observe’ another, and page items can ‘listen’ to events like open, close, save, idle, context menu,… For example, simply moving one page item can automatically trigger the execution of a script that makes other page items ‘follow’. Without APID, ExtendScripts are ‘static’ entities – i.e. they need to be launched by the user via the Scripts palette, and are cannot be activated in an event-driven way.
- Active Page Item Developer opens up functionality that is not available in ExtendScript – for example, version 1.0 makes it possible to attach context menus to individual page items from ExtendScript. Future versions will add more functionality – e.g. creating floating palettes from ExtendScript,…
- ExtendScript has a number of substantial advantages, compared to using C++ for software development. It’s easy to learn and use, it allows for fast development, it’s cross-platform (Mac/Win), and there is no need to create different versions to support CS, CS2, CS3, CS4 and CS5. And there are no endless run/compile/debug cycles!
- Active Page Item Developer allows you to create your own Scripted Plug-Ins. To get a good idea of what can be achieved: check out some of our ‘freebie‘ Plug-Ins – they were all created using this technology.
- We also have a version specially made for InDesign Server – contact us on [email protected] for more info.
Download Active Page Item Developer Toolkit (version 1.0.47 – Development toolkit. Fully functional, time-limited demo version, manuals and example files. Includes script compiler for standalone ExtendScripts. Includes versions for Mac, Windows, InDesign CS up to CS4. The APIDLicenseGenerator application is not included in the demo – this application is e-mailed to you after purchase). Higher versions up to CC are supported, but you need to download and install the proper version of APID ToolAssistant separately from here.
Click the link above, download and expand, and put the correct plug-in into your InDesign Plug-Ins folder. Restart InDesign to enable the Plug-In in case InDesign was already running.
How to purchase
We use PayPal as our payment processor, but YOU DON’T NEED A PAYPAL ACCOUNT to pay us.
You can pay with a standard Visa or Mastercard. PayPal made the option for credit card payment purposely a bit less than obvious – but if you read the payment screens carefully, you should be able to figure it out and pay us without being forced to register for PayPal.
There is an alternate approach to purchasing licenses for the APID ToolAssistant. You can also install the plug-in, bring up the About APID ToolAssistant window via the API – APID ToolAssistant… menu item, select the line with APID ToolAssistant in the listfield, and click the Get License… button at the bottom.
The Active Page Item Developer Toolkit (APID Toolkit) can be purchased for US$149.00 (excl. tax/GST) and includes a single APID ToolAssistant license.
End-users need to have a licensed copy of the APID ToolAssistant in order to use solutions that were created with APID Toolkit.
Licenses for APID ToolAssistant can be purchased in single quantities for US$25.00 (excl. tax/GST where applicable) per installed copy/serial number of InDesign.
If you have multiple copies of InDesign (e.g. InDesign CS as well as InDesign CS2 or CS3) on a single workstation, you’ll also need to purchase multiple licenses for the APID ToolAssistant.
Multi-license bundles are also available at progressively lower per-license prices. E-mail us for the purchase of larger bundles; 1-user and 10-user bundles are available for on-line purchase.
|ToolAssistant Bundle Size||Price (excl. tax/GST)||Price per license||Purchasing|
|For third party developers only – single license Activation Code for pre-purchased APID ToolAssistant licenses||US$25.0||US$25.0|
These are meant for use within a single company or entity. Multi-license bundles should not be split and re-sold separately.
Software developers can also bundle emdedded APID ToolAssistant licenses within the license files for their tools, allowing end-users to experience one-stop shopping.
Please contact [email protected] for more info – there is a developer registration process to go through in order to approve a developer for APID ToolAssistant bunding.
We also carry another version of the Active Page Item system, called Active Page Item Enterprise(APIE). The difference between APID and APIE lies in how solutions are deployed to multiple target workstations:
– Solutions developed with APID need a licensed version of APID ToolAssistant for each of the targeted workstations/copies of InDesign
– Solutions developed with APIE can instead use free, unlicensed versions of APID ToolAssistant, and do not incur a one-time per-seat cost.
If a very large amount of target workstations needs to be deployed, or if you want to avoid managing license files, you should consider licensing APIE. APIE is priced at US$15,000.00 – that means that APIE becomes more interesting than APID once you need to deploy to about 2,000 or more workstations.
Contact [email protected] if you want to purchase an APIE license.
16-Sep-2009 Version 1.0.47:
- Fixed crash on doc close when adornments were being modified by an event handler during document close.
- Adornments now draw correctly on flipped items
- Added new opcode:
kOpCode_SystemID = 10022
theSystemID = app.callExtension(0x90B6C,10022);
This is the optional system ID that is used to generate license files.
- Adornments are not any more subjected to transparency effects applied to their page item.
- Adornments now draw correctly on rotated items
- Adornments now stay same size when user zooms in or out.
- Adornments now don’t print, don’t display in preview mode, and don’t show up on page thumbnails
- Fixed ‘Missing plug-in’ dialogs that appear when a document is opened without APID ToolAssistant installed
- Fixed bug in MenuName.txt handling (on Mac the file had to be named \MenuName.txt, with a leading backslash, instead of MenuName.txt)
- Fixed undo/redo menu names for SPLN-provided context menus
- Fixed Mac issue where a document name with double quotes would break SPLN functionality
- dataStore is now persisted into InDesign libraries, snippets, .INX and .IDML files
- Modifying an inline graphic should now trigger a modified-text event
- External SPLN events are now properly collapsed into a single Undo step.
- Improved ‘event cascading’ behavior (where scripts modify page items, causing further modified* events,…) – there is a fine balance between causing infinite loops, and not being able to detect the consequences of a scripted page item modification.
- Added new opcodes:
10018 = kOpcode_OwningDocument
10019 = kOpcode_OwningPage
10020 = kOpcode_OwningSpread.
The spread and page are very simple-minded versions – they cannot handle any kind of nesting; we intend to improve these in 1.0.48.
theDoc = app.callExtension(0x90B6C,10018,thePageItem);
- Added new opcode to access value of ‘theItem’ as predefined at the beginning of each event handler call – even if ‘theItem’ is overwritten, calling this opcode allows you to retrieve its original value.
theItemAgain = app.callExtension(0x90B6C,10017);
- Fixed issue where ID would crash on export to EPS after printing and closing a previous document
- Fixed bug where some slightly corrupted documents would lose their dataStore
- Fixed bug where an undo just after doc open would disable events
- Support more glyphs in adornment strings (e.g. Hebrew characters).
Left-to-Right text support is very limited: you can request an adornment string to be drawn left-to-right instead of right-to-left by appending a new, optional boolean parameter = true to the adornment specification.
- Fixed an issue where undoing a change to a page item event filter or script tag change could corrupt APID’s internal lookup tables, causing all kinds of strange effects.
- The ‘Cancel’ button on the ‘beg’ dialog has been renamed to ‘OK’ which is much less confusing
- New opcode:
- Fixed issue where a change of ID serial number or ethernet card on a computer would cause the wrong license file requests to be sent.
- Missing PNG now don’t draw at all.
- Stories in anchored frames should now get more modified* events.
10-Nov-2008 Version 1.0.46:
- CS4 compatibility
- Improved speed on document load if multiple .spln files are installed.
- Fixed a few crashes
- The ‘delete’ event is currently inoperative.
- Scripted page adornments. You can now use scripting (ExtendScript / AppleScript / VBScript) to add little text labels or little icons page items to show additional info to the end-user. These adornments are non-printing. They can be either text (a string), a little PNG image, or both (text on top of a PNG image). Very cool, very useful.
- Added a bunch of new ‘story’ events
- Custom context-click menus now also work without having any page items selected
- Guides can now also have context-click menus
- You can now install your .spln files anywhere in the plug-ins folder, and APIDToolAssistant anywhere else – making .spln files now behave a lot more like ‘real’ plug-ins.
- You can now set a PNG logo to be shown in the ‘beg’ dialog for your spln
- You can access the file path of your .spln file from an event handler script (e.g. to access associated resources)
- There are new functions around document GUID: you can call a function to find the GUID of the frontmost document, the active document (these are not necessarily the same), or the containing document GUID of any page item.
- The Undo/Redo menu now shows the proper names of your scripted menu items instead of the bland ‘Undo Scripted Operation’.
- You can now dynamically remove menus that you’ve added
- You can now control the showing of checkmarks in menus and context menus
- You now have more control over the order of placement of menu items
- You can now access InDesign’s serial number from scripting (e.g. to implement seat/license-dependent functionality)
- Previously, using an .spln file caused a copy of the complete encrypted script to be embedded in every single document. That does not happen any more – which greatly reduces the footprint APID leaves on document sizes.
- You get ‘modified’ events when a page item is detached/attached/reattached from/to a master page.
- More info can be found at https://www.rorohiko.com/cgi-bin/yabb2/YaBB.pl?board=APIDDoc
- (work in progress)
15-May-2008 Version 1.0.45:
- APIR and APID Kernel have been merged into APID ToolAssistant. APID licenses remain valid for use with APID ToolAssistant.
- Added Document.multiPropertyAssign() event to scripting DOM
- Fixed sporadic crash-on-quit issues
- Send ‘parent…’ events to sub-elements, e.g. when a story is modified, anchored frames are now notified of the modification
- Stories can now be observed – it is easiest to assign them a label programmatically via their Story.label property.
20-Mar-2008 Version 1.0.44:
- The APID Kernel was updated to version 1.0.44. The APID Toolkit is still at 1.0.43 but will be updated soon – we’re still writing the documentation for the new features. Anyone who needs the updated toolkit earlier, please e-mail us at [email protected]
- Support for combined APID/spln licensing, making it possible for end-users to license both the APIDKernel and an spln through a single license file aquired from the spln developer
- Beg window can bow be dismissed with the <Return> key
- New opcodes added to app.callExtension(0x90B6C,<opcode>,…):
- kOpCode_RunScriptInEngine = 10007
- kOpCode_GetDocGUID = 10008
- kOpCode_FindDocGUID = 10009
- New events: modified-objectstyle, modified-textformat, subjectModified-objectstyle, subjectModified-textformat
- handleScriptEvent is now less restrictive – a password match is sufficient to allow cross-spln calls (previously, the whole componentID had to match)
- Support for shared, encrypted subroutine libraries
- Support for version numbers attached to .spln files
- Licensing scheme now extended to use InDesign serial number as well as a unique system identifier – which resolves the problem of multi-seat InDesign installations where many computers share the same InDesign serial number.
- Fixed issue that caused InDesign to sometimes crash when copying guides.
- Fixed some potential redraw issues.
- API ‘About Window’ now shows all .spln files even if no document has yet been opened.
- API ‘About Window’ has support for .spln version numbers
- Added scripted DocGUID support to allow scripts to better handle situations with two documents carrying the same name.
- Documents don’t show unexpected ‘modified state’ after installing new or updated .spln files.
5-Oct-2007 Version 1.0.43:
- New events on text frames:
- Allows context menus on text selections
- Allow nested context menus in InDesign CS3 and above
- Allow use of custom menu headers instead of default ‘API’ menu
- Allow configurable delay for system event codes (by default, all delays are 0, except for “modified-text”, which has a delay of 3000 ms, i.e. 3 seconds). See $DELAY_<eventcode> in reference manual under section “5.2 Predefined keys”
- Allow launching external apps while locking InDesign in modal mode until external app finishes (used for external dialogs – see app.launchWith in reference manual and section 5.7 in cookbook)
- Support for InDesign CS3 named script engines – events can be targeted to a particular engine. See section 5.6 in cookbook.
- Support for clearing the undo stack in InDesign CS3 while running lengthy scripts (see app.callExtension in reference manual)
- New examples added to cookbook documentation
- Fixed issue that caused duplicate events on text frames in InDesign CS and CS2
30-Jun-2007 Version 1.0.42:
- Faster menu and context menu handling: introduced new eventsloadContextMenu and subjectLoadContextMenu that make context menu handling much more efficient.
- Data for scripted plugin files whose name starts with ‘@’ is ‘persistent’ even if the file is not present or the file’s modified date changes.
19-May-2007 Version 1.0.41:
- Now supports app.setDataStore and app.getDataStore for persistent application-wide data storage
- Fixed conflict with Softcare’s K4 – the docLoaded event is NOT issued any more on any documents that are not made visible. In essence, docLoaded now fires when the document layout window opens, and not when the document is opened.
19-May-2007 Version 1.0.40 (not released):
- Faster menu handling by allowing grouping of menu items (look up $GROUP_EVENTS$ in the reference manual).
25-Apr-2007 Version 1.0.39:
- Added support for CS3
- Fixed conflict with CS2 ExtendScript Toolkit
27-Feb-2007 Version 1.0.38:
- Fixed Win 2000 issue in the 1.0.37 version
- Supports compilation of standalone scripts. Now includes a drag/drop InDesignScriptCompiler; allowing a developer to manage licensing and demo versions of stand-alone ExtendScripts
1-Dec-2006 Version 1.0.37:
- Versions 1.0.34-1.0.36 were not released
- Resolved issue that caused ‘missing links’ dialog to be suppressed on opening of document.
- Added numerous new features: new print dialog events, progress bar management via application object, support for external programs (app.launchWith),… See reference manual for more info.
22-Sept-2006 Version 1.0.33:
- Attempt to resolved issue that caused ‘missing links’ dialog to be suppressed on opening of document. Issue was not fixed.
24-Aug-2006 Version 1.0.32:
- Resolved conflict with HistoryLog en TextExporter.
- Resolved undesirable delays when executing close or save in a script and a docClose or docSave handler is present. The delays now only occur when close or save are executed from inside a handler script, not from a ‘regular’ script.
- APIDTemplate: debug version of plug-in is not condensed for ease of debugging, release version is condensed (ugly-printed).
23-Aug-2006 Version 1.0.31:
- Not released. Speeded up operations when Edit-Select All is performed (Color2Gray tool).
17-Aug-2006 Version 1.0.30:
- Not released. Fixed palette conflict with Softcare’s K4 plug-in.
14-Aug-2006 Version 1.0.29:
- Support for additional features of APID (external data store).
- New information added to Reference manual
- Enhanced APIDTemplate.indd – support for debug and release versions of a plug-in.
12-Aug-2006 Version 1.0.28:
- Not released. Fixed potential conflict with other plug-ins
6-Aug-2006 Version 1.0.27:
- Not released. InDesign CS2 server support
31 Jul-2006 Version 1.0.26:
- Fixed issues with Japanese CS2
- Fixed issue when modal dialog opens on document open (e.g. missing fonts).
- Added support for ‘external…’ event codes
- New documentation added to reference manual and cookbook (use of APIDTemplate, external event codes, using AppleScript to call the APID,…)
31-Jul-2006 Version 1.0.25:
- Improved progress bar facilities
17-Jul-2006 Version 1.0.24:
- Support for APIDToolkit
- Faster handling of save, close, quit
- Corrected handling of keyboard shortcuts assigned to menus managed by scripted plug-ins
- Support for enabling/disabling menus managed by scripted plug-ins
25-Jun-2006 Version 1.0.23:
- Resolved crash with book files
7-Jun-2006 Version 1.0.22:
- Resolved crashes with calling a document’s save or close function from inside an event handler.
- Added support for menu bar menu items
25-May-2006 Version 1.0.21:
- Resolved some timing issues related to contextual menus
- Resolved a conflict with AppleScript
- Resolved a crash which occured when using a progress bar in a contextual menu handler
17-May-2006 Version 1.0.20:
- Added support for showing progress bars (see reference manual).
- Added automated template for Scripted Plugins with external source code (so you can use an external editor to edit them)
- Can now use the <document>.save(…) method from inside a scripted event handler.
27-Apr-2006 Version 1.0.19:
- Initial public release