In most cases, ExtendScript regular expressions cannot digest the (a|b)+
scheme. This bug is not new, but it's worth defining its symptoms and extent. This article presents a very simple problem, with no known solution to date…
Tips
Scripters corner: howtos, tips and tricks (InDesign ExtendScript).The Hard Problem of Quantified Alternatives in ExtendScript
January 21, 2022 | Tips | en
Porting your InDesign Script into IdExtenso — Step 5
October 19, 2021 | Tips | en
In this episode we seriously improve the relationship between user settings and user interface. As a result, we get a smart InDesign script that both remembers the choices the user made within the session and adapts to the context, that is, whether the script should target the selection or a larger scope…
Coordinate Spaces & Transformations in InDesign [UPDATE]
October 14, 2021 | Tips | en
Coordinate Spaces & Transformations is a free eBook covering all atomic subjects that a InDesign scripter or developer should grab before using transformation matrices and the related methods. The last update has minor corrections and notes…
Porting your InDesign Script into IdExtenso — Step 4
October 09, 2021 | Tips | en
The previous episode dealt with modularity in IdExtenso, now is the time to take full advantage of it! Today we will see how to add a dialog interacting with user options. You will be amazed at how quickly this component fits into the script…
Porting your InDesign Script into IdExtenso — Step 3
September 24, 2021 | Tips | en
In this episode, you will learn how to arrange your code so that it fits into IdExtenso's “modular space.” Modularity is a key term when it comes to maintaining a large-scale project. Even if our sample script is not in itself of pharaonic complexity, we will transform it, as an exercise, into a pure module…
Porting your InDesign Script into IdExtenso — Step 2
September 15, 2021 | Tips | en
Today we will embed in IdExtenso the code we prepared in the previous episode. That's of course an important move, especially when you perform it for the very first time (since then you need to install the framework.) But you will discover in what follows the immediate advantages that $$ offers you…
Porting your InDesign Script into IdExtenso — Step 1
September 07, 2021 | Tips | en
So, you have the root idea and a basic code for your next InDesign script. All is fine. It works so well that you're now planning to release it, which opens additional questions: Will it work everywhere? How do I trace risky functions? What if I need to integrate new features later on? How do I deal with persistent user settings? How to add a basic interface? How will I localize the dialog in other languages? Can I make my script available in a dedicated menu? Will it work in a JSXBIN package as well? Can I obfuscate my code?…
Page Range Formatter [UPDATE]
August 17, 2021 | Tips | en
Given an unordered set of page numbers—e.g. {13, 9, 25, 12, 11, 8}
—we often have to compute and output a range specification in the form "8-9; 11-13; 25"
. While this topic has been already discussed in the InDesign scripting forum, I'd like to explore today a slightly different approach…
ScriptUI vs. UI Scaling
March 08, 2021 | Tips | en
From CC 2014, InDesign and Illustrator interfaces needed to adapt to OS “scale settings” strategy on 4K/Retina displays. And with Windows 10 defaultly scaling at 150% in such resolutions, Adobe engineers were forced to rework their famous HiDPI support, which led to introduce UI Scaling in the Preferences dialog box. So far, so good. But ScriptUI has not been fully “informed” of these new rules…
Understanding the `count( )` Method
November 13, 2020 | Tips | en
InDesign's scripting infrastructure is based on DOM objects (Document
, Story
, Paragraph
…) and any such object has an associated collection (Documents
, Stories
, Paragraphs
…). Collections typically arise in complex specifiers like myDocument.stories.everyItem().words
. They also provide two essential members, the length
property and the count()
method. How do they differ?
The Tricky Side of `string.replace( )` in ExtendScript
September 14, 2020 | Tips | en
When you invoke myString.replace(...)
in pure JavaScript, the “string being examined” is and remains myString during the whole operation. ExtendScript offers a slightly different mechanism that may unexpectedly alter the output string…
Why You Should Never Use `x==null` in ExtendScript
May 13, 2020 | Tips | en
The Japanese scripter あるふぁ found a bug affecting any ExtendScript code based on ...==null
. This is not a critical issue (because experienced developers never use such condition!) but the case provides the opportunity to summarize important rules regarding falsey values and the equality operator…
How To Get parseInt( ) Fixed in ExtendScript
January 10, 2019 | Tips | en
The global method parseInt(str,radix)
has a critical bug in ExtendScript. When radix
is greater than 10, some undesired characters can be mistakenly parsed as valid digits, which corrupts the output. This issue is solved in IdExtenso…
Note on ScriptUI Mouse Events
December 19, 2018 | Tips | en
ScriptUI provides a set of usual mouse events (mouseover
, mousedown
, mouseup
, click
…) which are of primary interest in responsive user interfaces (UI). Developers can add event listeners to any UI component that needs to respond accordingly when the mouse enters the scene. But handling such events requires carefulness if your script has to support both CS and CC environments.
SelToPng | Quick InDesign-to-PNG Serializer
November 06, 2017 | Tips | en
As an InDesign maniac I often use it for achieving tasks that would normally involve Illustrator or Photoshop. The best example of this deviance is PNG conversion. You read it well! And here is a tool that translates any InDesign shape, group, or whatever, into a PNG stream. Not a big deal, but let me explain…
Coordinate Spaces & Transformations in InDesign — Chap.4 (Draft)
June 14, 2016 | Tips | en
Chapter 4 of our “Spaces & Transform” eBook is probably both the trickiest and the most important. It tries to reveal the intricacies behind the Scripting DOM resolve()
method, the unique tool for setting and processing InDesign locations with respect to the underlying coordinate systems. I spent months figuring out its obscure syntax and improving my knowledge on that particular topic. Understanding the location resolver is a crucial step for developing scripts that can deal in depth with geometry and transformations in InDesign.
Why I Do Not Use Meaningful Variable Names (Anymore)
May 03, 2016 | Tips | en
Without doubt this is a “very bad practice.” When it comes to naming arguments and variables, every programmer should prefer descriptive and intention-revealing names over short forms. We all read this rule in Clean Coding bibles. Tokens like userName
, swatchArray
, or currentWordCount
sound of course much better than s
, a
, and i
…
« previous entries - Page 1 of 3