Tag : JavaScripting

Making String.split() support U+0000 in ExtendScript CS4

For obscure reasons ExtendScript 3.x is somewhat allergic to the character "\x00" (U+0000). Some String and RegExp routines become silently defective as soon as your source string contains one or more NUL character. Although most of these bugs have been fixed in CS5 (ExtendScript 4.1), this still leads to compatibility and portability issues. Here is a snippet that allows to split any string and get proper results in all versions.

Continue reading...

140+ InDesign and Creative Tasks            You Didn't Know You Could Automate

140+ InDesign and Creative Tasks -- Top 2012 ReTweetsNew tools, new solutions, new ideas, emerge every day for and from InDesign and Creative Suite heroes. But strangely enough, most graphic designers and InDesign end-users still ignore—or cannot measure—the power of automation. As a kind of proof of concept I decided to start the year with a celebration of the most noticeable scripts, tools and resources that have shaken 2012 in this area. Since I use Twitter as a bookmarking platform, it seemed fun to compile a selection of links I've tweeted or re-tweeted during the last 12 months. This is also an opportunity to pay tribute to my colleagues, scripters, developers, trainers, and time-savers! Now make yourself comfortable and enter in the Productive Dome…

Continue reading...

Space Invaders Game in InDesign!

Layout Invaders for InDesign CS5/CS6, script created by Philipp Geuder.

Continue reading...

How to Augment and Process Nested Groups (CS4-CS6)

Dealing with groups is a major headache for InDesign scripters. On one hand, the Group object has no injection method to offer, which makes difficult to append existing page items into a given group. On the other hand, although the Groups API exposes a promising add() method, nobody has ever managed to use this feature from any PageItem.groups area, so we seem doomed to perpetually rebuild groups from scratch.

Continue reading...

InDesign Scripting Forum Roundup #3

Here is the third episode of the Scripting Forum Roundup(s), a selection of 18 recommended discussions and sample codes which I have contributed to over the last six months. Enjoy!

Continue reading...

So What's New in InDesign CS6 Scripting DOM

InDesign CS6 is full of new features, which explains the size (98 pages) of the Object Members part in our tracking-change PDF below. Of course many additions regard interactivity, form behaviors and the related events. The Scripting DOM now includes the following ubiquitous collections: checkBoxes, comboBoxes, listBoxes, radioButtons, signatureFields, textBoxes. A number of existing objects have been extended accordingly.

Besides, there are many interesting additions to discover and experiment. Have fun!

Download “What's New in InDesign CS6 Scripting | Object Members” (PDF)

Download “What's New in InDesign CS6 Scripting | Enumerators” (PDF)

• See also:
“So What's New in InDesign CS5.5 Scripting DOM”
“So What's New in InDesign CS5 Scripting DOM”

InDesign Scripting Forum Roundup #2

As opened in the “InDesign Scripting Forum: 25 ‘sticky’ posts” article, I will regularly feed this section with recommended discussions and/or snippets which I have contributed to through the ID Scripting Forum. Here is the scripting stuff I found specially interesting over the last six months…

Continue reading...

Notes on ‘fastEntireScript’ Undo Mode

In April 2009, Thomas Silkjær reported a bug on app.doScript that alters the ‘undo’ feature in InDesign. Although this issue has been fixed in CS5, there are still some pitfalls to beware of when you want to speed up your script through fastEntireScript

Continue reading...

Comparing the Performance of ExtendScript Snippets

Although jsPerf is a very effective tool in a pure JavaScript environment, you may want to benchmark competing code snippets in the specific ExtendScript field. Here is a simple way to test and improve your InDesign scripted functions…

Continue reading...

Permutation d'objets dans InDesign (miniscript)

Non sans témérité, Stéphane Baril et David Deraedt nous ont récemment accueillis sur le plateau de Chips & Tips, la célèbre série d'Adobe TV dédiée à la diététique productivité. Au détour de cet épisode, Loïc Aigon et votre serviteur proposons une sorte de préambule aux techniques d'automatisation et de scripting dans la Creative Suite, avec quelques illustrations simples et directement accessibles aux néophytes. Vous y découvrirez notamment la version embryonnaire du script SwapItems utilisé pour permuter des objets dans une maquette InDesign…

Continue reading...

So What's New in InDesign CS5.5 Scripting DOM

The interesting thing about tracking Scripting DOM changes from InDesign CS5 to InDesign CS5.5 is that this instantly reveals the main innovations of this ‘mid-cycle’ release —so that scripters can easily focus on the freshest features. The below PDFs offer you in a snap the tip of the iceberg: the new Article component and a bunch of new export options (HTMLExportPreference, EPubExportPreference, StyleExportTagMap, ObjectExportOption) that indicate the much greater integration of InDesign EPUB and digital publishing capabilities. Enjoy!

Download “What's New in InDesign CS5.5 Scripting | Object Members” (PDF)

Download “What's New in InDesign CS5.5 Scripting | Enumerators” (PDF)

• See also: “So What's New in InDesign CS5 Scripting DOM”

InDesign Scripting Forum: 25 ‘sticky’ posts [roundup]

The InDesign Scripting Forum is an ideal place to post scripting recipes and to address technical issues. I learn a lot from its famous contributors —Dave Saunders, Harbs, Jongware, Peter Kahrel, Kasyan Servetsky, Marijan Tompa… At odd times I post my own brainchilds. Here is a small selection of snippets and topics that I think are worthwhile.

Continue reading...

Alphabetical Sort in JavaScript (and InDesign)

Surprisingly, JavaScript offers no easy way to alphabetize words in relevant order. Although the Array.sort() method is known to perform, by default, a lexicographical sort, you will find very quickly that the result is wrong in most real-life situations. Actually, the internal mechanism of JS sorting is confined to compare Unicode characters by their code points, so 'Z' (U+005A) comes before 'e' (U+0065), which itself comes before 'ç' (U+00E7), etc. Also, you have all noted with vexation that InDesign does not offer any alphabetical sort feature! Here is an experimental tool to help restore order in Latin alphabets.

Continue reading...

So What's New in InDesign CS5 Scripting DOM

Download “What's New in InDesign CS5 Scripting | Object Members” (PDF)

Download “What's New in InDesign CS5 Scripting | Enumerators” (PDF)

On ‘everyItem()’ – Part 2

In the previous episode we learned that every scripting DOM object is in fact an object specifier, which acts like a path in the InDesign object tree. Collection's methods only allow us to build object specifiers. Invoking a property or a method provided by a specifier causes InDesign to send a “verb-first command” to the underlying receiver(s). We will now consider how this process impacts your code, what is returned into your script and how to deal with some side effects.

Continue reading...

On ‘everyItem()’ – Part 1

Every collection in the scope of the InDesign Scripting DOM provides a method called everyItem. It remained undocumented until InDesign CS3, but scripting experts such as Dave Saunders had already pointed out its forcefulness and already knew how to exploit it. Here are some details about this esoteric syntax.

Continue reading...

Operator Overloading with ExtendScript

Operator overloading in JavaScript is a controversial issue. Actually, this dangerous feature has been rejected in ECMAScript 4. However, ExtendScript allows you to override the behavior of many mathematical and logical operators on a class-by-class basis since CS2.

Continue reading...

Binary JavaScript Embedment (CS4/CS5)

The jsxbin format (“Binary JavaScript”) is a boon for developers because it enables them to distribute a script without exposing its precious code. The ExtendScript ToolKit (ESTK) offers an Export to Binary feature which instantly converts a human-readable js(x) file into jsxbin. InDesign can then interpret this file as if it were a pure JavaScript. The only (boring!) problem is that the encoded script is not allowed to load a persistent session through the #targetengine directive. Here is a secret trick to bypass this limitation with a single encrypted file.

Continue reading...

Indiscripts Top 80 Autumn Links

Top 80 LinksAs a present for Christmas, here is a compilation of the greatest links we've tweeted during those last 3 months. An overwhelming majority regards InDesign scripting, plug-ins, GREP and/or JavaScript resources for ‘InDevelopers’.

Continue reading...

Can InDesign Script Rewrite Itself?

As illustrated by the YALT technique, it's easy —and powerful!— to let a script read its own bytes while it is running. We could even go further and get a script to update itself to achieve some advanced functionalities.

Continue reading...

- Page 2 of 3 -