IdExtenso remains the go-to framework for serious InDesign scripting. With v2.60324, scripters gain more control over binary data, clipboard integration, and other advanced features. All while maintaining the framework's signature blend of modularity and power.

File I/O, Binary Data, Compression, Clipboard

 

Optional Length Parameter in Binary Reading. — The File module gained a new optional argument in $$.File.readBinary():

// Read first 256 bytes only
var data = $$.File.readBinary(file, 256);
 

When the 2nd parameter is supplied, the method returns at most that many bytes instead of the entire file, essential for streaming large files or sampling data without loading everything into memory.

 

Enhanced ByteStream Class. — The ByteStream class received a major overhaul with new utilities:
   • New public methods: clone() and copy() for deep copying binary streams.
   • FXP/UFX tag support: Added signed/unsigned “16-bit fixed-point” (FXP/UFX) encoding tags for precision arithmetic operations.
   • Extensive bug fixes and performance improvements.

 

ZInflate/ZDeflate In-Depth Updates. — Both ZInflate and ZDeflate compression modules have been updated with improved algorithms and reliability, ensuring better compatibility and performance.

 

Clipboard Module. — Introducing Clipboard, a lightweight module enabling your scripts to read from and write to the system clipboard with minimal overhead:

var str = $$.Clipboard.get();     // Read clipboard as text
$$.Clipboard.set("new content");  // Write to clipboard
 

Extremely useful for data exchange workflows.


String Utilities & Text Processing

 

Adler-32 Checksum. — Added the Adler-32 checksum algorithm to Ext/string. Generate checksums quickly:

// Returns uint32 checksum
var checksum = myString.adler32();
 

 

Enhanced Base64 Security. — Improved security of String.fromBase64() and String.prototype.toBase64() methods in Ext/string to better handle edge cases and malformed input.

 

Flexible Byte Conversion. — The String.prototype.toBytes() method now supports an optional AS_HEXA boolean flag:

var str = '\x03\xFF\x2C';
str.toBytes(true);   // → ['03','FF','2C'...] as hex codes
str.toBytes(false);  // → [3, 255, 44...] as uint8 (default)
 

Perfect for debugging binary data or generating hexadecimal representations.

 

Canadian Aboriginal Syllabics Support. — Extended Unicode support in Linguist/WSYS to include the Canadian Aboriginal Syllabics Extended-A range (U+11AB0..U+11ABF).


Root Modules & Compatibility Patches

 

JSON. — The JSON module now includes custom error detection in $$.JSON.lave(). If the argument is not a string or is empty, a meaningful error is thrown instead of the native ExtendScript's cryptic message.

 

Cleaner Log Output. — The Log module now allows calling $$.Log.push() without arguments to forcibly generate an empty line. (Equivalent to $$.Log.push("") but just shorter.)

 

Improved ExtendScript ToolKit Compatibility. — Env and the estk entry point underwent refinements to make scripts running from ExtendScript ToolKit more accurately managed. Engine persistence and context detection now work more reliably in ESTK environments.

 

Folder Creation Patch. — Fixed a critical issue in Ext/folder where the native Folder.prototype.create() method no longer worked as expected on macOS/InDesign 20.1.


All changes in this release prioritize backward compatibility while improving memory efficiency, reliability, speed and cross-version support (continued support for ExtendScript 3.92–4.x and InDesign CS4–2026).

Download the latest version and explore the /etc branch for optional modules that power your scripts to the next level.