I shot this image last week. Cow peeking over grassy ridge.

If you want to use as Desktop Background: here’s a link to a high-quality: 6000×4000 file.
Note: If you are using version 0.0.4 or below, it will have stopped working by now because it was time bombed on December 31 of last year. Please update to version 0.0.5 (see link below).
I’ve been dabbling around with ExtendScript DLLs.
These little critters run within ExtendScript and allow me to enhance ExtendScript, for all apps that support it, including InDesign Server, on Mac and Windows.
I can add whatever functionality I decide to wrap into such a DLL.
Now, I’ve just finished wrapping the C++ libcurl
into such a wrapper. A full version can be downloaded here.
https://www.rorohiko.com/downloads/JSXGetURL.0.0.5.zip
It runs till December 31 of this year. One month before that, from December 1 onwards, an updated version with a future time bomb date will become available. Email me and I’ll send you a link.
There is nothing to install, no admin privileges needed. You just need to add a folder with a few .jsx files to your ExtendScript project, and you can simply write ExtendScript like:
#include "JSXGetURL/JSXGetURLLoader.jsx"
var getURL = JSXGetURL();
var s = getURL.get("https://www.rorohiko.com");
alert(s.substr(0,1000));
and this works in InDesign Server, ExtendScript Toolkit, Bridge, InDesign, InCopy, Illustrator or whatever else supports ExtendScript, and it works both on Mac and Windows. And it’s very fast because it’s all compiled C/C++ code.
(Note: when running from ExtendScript Toolkit make sure that the Debug – Do Not Break On Guarded Exceptions menu item is ticked. The loader relies on try-catch to work when it figures out whether to load the 64-bit vs 32-bit dynamic library).
Right now, I’ve only done a synchronous get
and post
and nothing event-driven. I can add many bells and whistles, as desired; I’ve done only a proof-of-concept.
As it is, this thing now kind of supersedes my old ventures (https://coppieters.nz/?p=133 which uses CEP/node as a ‘servant’ to ExtendScript, and does not work on InDesign Server, and https://rorohiko.blogspot.com/2013/01/geturlsjsx.html which was pure JSX, a subset of http
only, no https
).
For commercial use, I am currently thinking of the following approach:
The conundrum I was facing: what to do with this? Over the years, I’ve tried to ‘productize’ some of the software I wrote, but I’ve never managed to generate enough income from that to make it worthwhile. My main income is always from consultancy/custom dev/project kickstarts/teaching/temporary team booster.
As a potential ‘shrink-wrap’ product, this one is even more problematic. I think the market for this product is extremely limited (maybe 10-100?). And ExtendScript is on the way out, so the lifetime is limited. Productizing it (adding licensing/demo/docs/support/marketing…) would be a fair bit of effort. Coding is just a small part of the whole product creation.
But I think this could be extremely helpful for a bunch of InDesign Server projects (and maybe for some Illustrator and Bridge projects). Being able to ‘grab’ assets straight off a URL via a lightning fast C/C++ DLL is pretty powerful.
For example: how about protecting your intellectual property by dynamically loading part of your critical code from a remote server after a license check, instead of relying on JSXBIN?
The next thing I want to try is to embed a Chrome V8 engine inside ExtendScript – turn the world on its head. There is no business case for this – it’s just something I want to try and see how it works out.
Having V8 inside ExtendScript would allow me to keep the ExtendScript DOM and run modern JavaScript – have my cake and eat it too.
Anyway: if you’re interested in this ExtendScript enhancement and have ideas or questions, contact me at [email protected]
Two-day virtual developer summit (June 4–5)
The Creative Developers Summit has been the go-to conference for the past half-dozen years for developers creating software for Adobe Creative Cloud applications. This year, sessions will all be online for obvious reasons.
Registration includes all sessions on both days, and it’s only $95 this year, a huge discount from previous years. Because everything is online, we’re going to have speakers prerecord their sessions so you can watch them at your leisure, and then have a fixed online time for each sessions’s Q&A, where the speakers will be there to answer your questions via Zoom.
Sign up here:
We’ll have some great speakers including Davide Barranca, Mike Zahorik, James Lockman, Kris Coppieters and others. Full info will be mailed to you in a few days.
If you would like to be a speaker at summit, and have some interesting topic you’d like to speak about, here’s your chance: send us a brief outline of a presentation you’d like to add to the summit. Send your proposal to [email protected]!
Note that this Summit is complementary to, not competing with, the upcoming “Adobe Creative Cloud Digital Partner Days 2020” which are happening on June 23 and 24:
https://creativecloudpartnerday2020.creativecloud.adobeevents.com
The Creative Developers Summit is (mostly) about developers talking to developers, and won’t overlap in content with Adobe’s June event.
Hope to “see” you soon!
Mapping out Adobe Creative Cloud apps. Core file paths, app specifiers…
Things like: indesign-15.064
but also photoshop-140.064
and premierepro-14.0
. App specifiers as might be needed when debugging with VSCode are not very regular.
Note: appMap.json
looks like JSON but it ain’t JSON. It’s JSON++ aka JSON-with-comments, which is not proper JSON. The Sparker app used in CEPSparker and JSXSparker can handle JSON++
The appMap.json
file is somewhat readable and contains information that could be valuable for other scripters. Note: when clicking the following link, you might see error messages about invalid JSON. That’s a side-effect of JSON++.
https://raw.githubusercontent.com/zwettemaan/JSXSparker/master/Templates/appMap.json#
JSXSparker is shaping up – it now handles download-to-running-hello-world-in-2-minutes for Bridge, InCopy, InDesign, Illustrator, Photoshop, Dreamweaver, Premiere Pro.
To support Premiere Pro, JSXSparker now comes with a rudimentary script runner panel, in order to extend the Premiere Pro UI with a means to run scripts.appMap.json
is part of the included starter template configurations.
appMap.json
is the ‘roadmap’ to where various Adobe apps keep their stuff.
Amongst other things, it documents what I found out about app specifiers, which are quite ‘irregular’.
appMap.json
feeds JSXSparker (and CEPSparker) but it also serves as my ongoing documentation/roadmap into the innards of the Adobe Creative cloud apps
A sore point of our Adobe Devs slack community is that this community is just a loose swarm of cooperative developers, and we have to make do with a free Slack group.
That works well, up to a point: we only get access to the most recent 10,000 messages.
Any older messages roll beyond the event horizon and disappear into a black hole.
To remove that limitation, Slack wants some money.
Fair enough, but the issue is that Slack does not cater for us. Our community does not have any ‘substance’. We’re not a company, we’re not a non-profit. We’re just a swarm of friendly, but solitary worker bees.
Slack has no facilities for individual, per-user payments. They assume every entity they deal with is some form of commercial or legal entity. Something with a postal address or incorporation address or a head office.
Slack does offer special dispensation for non-profits, but their definition of non-profit is very narrow. Our swarm ain’t it.
We’ve been humming and hawing about this for a long time, and I’ve now decided to cut through and fix the problem.
I clicked the ‘Upgrade’ button in Slack, and they reckon we have 60 active users, which would cost US$4,800 per year or $480 per month to remove the 10,000 message limitation.
My plan (now completed):
– Take out a one-month subscription for all of us. US$480 ain’t cheap and makes a dent in my finances, especially now that Covid-19 has made a lot of things grind to a halt, but I think I can wiggle it.
Until someone bit the bullet, nothing would have happened.
– Once the subscription runs, extract all messages in all channels and put them up for public access:
https://adobedevs.com/
You need a name and password which is published in the AdobeDevs Slack, in channel #archive-howtoaccess.
– Cancel the subscription again before the month is up
– All I need to do further is to regularly re-fetch a batch of the latest messages before we accumulate 10,000 additional messages. Every 2-3 months I’ll update my archive, and we should be good without any additional costs, except for my time.
So, for the month of April 2020, everyone on the AdobeDevs slack group can enjoy access to all messages.
And after that, you can access the archive here:
https://adobedevs.com/
After I did all that, Chris Ryland put out a call to ask subscribers to chip in to help me cover the US$480 subscription fee. And as it so happens: a bunch of people jumped in, and instead of being US$480 out of pocket, I ended up US$41.05 richer than when I started.
Thank you, Sergey Kritskiy, CtrlSoftware, Иван Степанов, Roland Dreger, Joost Huizinga, Brett Kizner, Derrick Barth, Chris Ryland, Creative Scripts, Joseph Portell!
Add your vote to my bug report here:
https://indesign.uservoice.com/forums/601180-adobe-indesign-bugs/suggestions/39698728-indesign-2020-15-0-1-cep-panel-size-bug-on-windows
A customer of mine reported that a CEP panel I made for them was randomly changing size and growing.
That sounded like the old bug we experienced way back, which I assumed had been fixed.
(See https://community.adobe.com/t5/get-started/cep-panel-wrong-size-in-cc2018/td-p/9660228?page=1)
I had not seen this problem in InDesign 2020, but I can now confirm: it’s still there, at least on my Windows laptop, using InDesign 2020 15.0.1, Windows 10, Microsoft Surface 4 with HiDPI.
At first I had a bit of trouble duplicating the problematic behavior; it only happens in fairly specific circumstances.
The conditions are:
– InDesign 2020 15.0.1
– Windows 10 x64
– HiDPI display
– Windows Display Scaling > 100%
I do know the HiDPI and scaling > 100% conditions are necessary, but I don’t know for sure if these conditions are sufficient, i.e. there might be additional circumstances that I’ve not yet identified.
What I’ve been able to determine is this:
I’ve not seen this same issue on my (Retina) Macs. I suspect it’s a Windows-only issue.
My customer sent me a video, so I knew for sure the issue was real, but I had some trouble making it happen on my machines.
I had initially tried using VirtualBox to mimic my customer’s setup, but the issue never happened using VirtualBox.
My VM setup (even though it also uses Windows Display scaling) did not exhibit the problem. VirtualBox is weird when it comes to scaling and resolutions.
Then I tried using an old T420 Lenovo laptop. This only has a ‘normal’ display and is set to use 100% scaling so I did not see the issue on thact machine either.
It’s only when I pulled out my MS Surface 4 which has a HiDPI display and scaling set to 200% that I could duplicate the issue my end.
I created a ‘dummy’ extension using CEPSparker
This extension is a simple ‘HelloWorld’ panel with size set to 600×600.
The ZXP file can be downloaded here:
https://rorohiko.com/downloads/ID2020PanelSizeBug/ID2020PanelSizeBug.1.0.0.zxp
The source code archive for this ZXP can be downloaded here:
https://rorohiko.com/downloads/ID2020PanelSizeBug/ID2020PanelSizeBug.zip
If I have scaling at 100%, it looks like this when I open the dummy panel:
With the scaling at 200%, I open the panel:
And then I get this:
The panel is wider than my whole screen.
Here’s an interesting list of a very wide range of useful InDesign scripts:
Note 1-Nov-2020: Make sure to check out my novel approach to GetURL: making curl available in ExtendScript. Not just for InDesign – any Adobe app that supports ExtendScript can use this. More info here:
The ExtendExtendScript installer was updated to also cover InDesign 2020/macOS Catalina. Download link at the end of this post.
Easily the most popular feature of ExtendExtendScript is that it provides an easy-to-use replacement for the old GetURL() method I wrote long time ago (https://rorohiko.blogspot.com/2008_07_01_archive.html)
The old GetURL only supported unencrypted http. The replacement provided by ExtendExtendScript will handle encrypted https traffic too.
ExtendExtendScript is more than just GetURL(). It allows you to enhance ExtendScript with all kinds of functionality written with node.js.
Version 1.0.4 was released on 16-Dec-2019, and adds support for InDesign 2020 and macOS Catalina.
Example: downloading an image over https, after installing ExtendExtendScript becomes as easy as:
// Need to run in a persistent engine for callbacks to work
// Make sure to add JSInterface.jsx and json2.jsx
#targetengine TestSomewhere
#include "JSInterface.jsx"
function handleData(data) {
var fileURL = "~/Desktop/image.jpg";
var file = new File(fileURL);
file.encoding = "BINARY";
file.open("w");
file.write(data);
file.close();
alert("File downloaded to " + fileURL);
}
var url = "https://www.rorohiko.com/MagnetoGuides2-poster.jpg";
JSInterface.evalScript("JSInterface.plugins.getURL(JSInterface.getData())", url, handleData);
More info on what it is, how it works, how to use it, and the source code can be found here: https://coppieters.nz/?p=133
ExtendExtendScript is a labor of love, and maintaining this tool represents a substantial cost to my company, Rorohiko Ltd.
You can help avoid that ExtendExtendScript would become abandonware!
Building installers, testing, code signing, notarizing, providing free tech support and hand-holding: it all adds up.
If this extension is useful to you, help the bean counters at Rorohiko properly gauge how useful this is to you, and show your level of interest and appreciation by making a donation to [email protected] via PayPal.
One way to go about it could be to make an honest estimate of how much time and effort this tool has saved you, then send Rorohiko 5% or 10% percent of your savings.
Download link to the latest installer:
https://www.rorohiko.com/downloads/ExtendExtendScript.1.0.4.zip
At the moment, the ‘canned’ ExtendExtendScript installer is not compatible with macOS Catalina (installer is 32 bit) and the source code comes with a manifest that ends with InDesign 13.x (CC 2018).
Recently, I’ve received a request for a macOS Catalina-compatible installer, but I am wondering whether I should put in the effort to update the ExtendExtendScript installer to 64-bit and cover InDesign CC 2019 and InDesign 2020.
The issue is that I have no ‘feel’ for how useful or popular this installer is. As a one-man band I need to judiciously divide my time between income-earning and free projects, and I want to avoid putting a lot of unpaid time and effort into a project that no one is interested in.
Easiest is to leave the thing as-is: the source code provided in an earlier post is sufficient to make this work for yourself on macOS Catalina and with InDesign 2020, but it’s not straightforward and would take some effort. (https://coppieters.nz/?p=133)
So, email me some feedback (kris at coppieters.nz or kris at rorohiko.com), and let me know if you’re using the ExtendExtendScript installer and whether you need or want it for macOS Catalina or InDesign CC 2019/InDesign 2020
If there is sufficient interest, I’ll try to put in some time in the coming months.
Disclaimer: the info below is a ‘best effort’ – it might be inaccurate or outdated by the time you read it. Make sure to verify any of the information below. Feel free to drop me an email to
kris at rorohiko.com
if you spot any inaccuracies.
Jump further down to the second section Where can we find…? for a straight list of InDesign versions and download locations.
I always have a hard time finding my way around the Adobe developer resources for InDesign development.
Maybe I am missing something, but I find them scattered over multiple places, and each time I need to download something, I end up in a wild goose chase trying to catch the elusive file I am after.
Below I will put my notes that are meant to help me remember where stuff is. It’ll just be a list of links and sites and stuff, organized in a way that fits my way of working. I am putting it out here, as it might be useful to someone else too.
If you are looking for all material regarding a particular InDesign version, skip to the next section – I will re-order the same information in this section by version.
First, I’ll list what is available, collated by the location where you can find it.
There are two main focal points where you will find the files you’re after: the Adobe Prerelease program, and the Adobe I/O web site.
https://console.adobe.io/downloads/id
https://www.adobeprerelease.com/
That first URL is somewhat hard to find. I found it via the following sequence: first, I went to https://www.adobe.io/apis.html, clicked on ‘Adobe InDesign’, which lead to https://www.adobe.io/apis/creativecloud/indesign.html. Then I had to click on ‘Get Started Today’ and that then took me to the downloads page I was after. Once you’re on the download page, you need to scroll down a bit; that might not immediately obvious.
On the downloads page you can download the CEP, ITK Symbol, C++ Plugin SDK, Scripting, and Server SDK for InDesign CC 2017, 2018 and 2019.
To gain access to the second URL, you need to enroll in the Adobe Prerelease program. AFAIK, some or all of the material in this area is under NDA.
Once you’re enrolled, you then might be interested to request access to the following programs:
You need to enable ‘Show Older Versions’ in the Creative Cloud control panel. After that, ExtendScript Toolkit will be listed and available to install.
Beta version: via InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Windows 64-bit only
Beta version: via InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Windows 64-bit only
Beta version: via InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Windows 64-bit only
Release version: via the Creative Cloud Panel
Installer version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via https://console.adobe.io/downloads/id
Windows 32-bit and 64-bit available
Release version: via the Creative Cloud Panel
Installer version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via https://console.adobe.io/downloads/id
Windows 32-bit and 64-bit available
Release version: via normal distribution channels
Time-limited test: via the InDesign CC Server Trial Downloads Program on https://www.adobeprerelease.com/
Watermarked developer release version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via https://console.adobe.io/downloads/id
Windows 64-bit only
Release version: via the Creative Cloud Panel
Installer version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via https://console.adobe.io/downloads/id
Windows 32-bit and 64-bit available
Release version: via the Creative Cloud Panel
Installer version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via https://console.adobe.io/downloads/id
Windows 32-bit and 64-bit available
Release version: via normal distribution channels
Time-limited test: via the InDesign CC Server Trial Downloads Program on https://www.adobeprerelease.com/
Watermarked developer release version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via https://console.adobe.io/downloads/id
Windows 64-bit only
Release version: –
Installer version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via https://console.adobe.io/downloads/id and InDesign Family SDK Download Program on https://www.adobeprerelease.com/
Windows 32-bit and 64-bit available
Release version: –
Installer version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via https://console.adobe.io/downloads/id and InDesign Family SDK Download Program on https://www.adobeprerelease.com/
Windows 32-bit and 64-bit available
Release version: via normal distribution channels
Time-limited test: via the InDesign CC Server Trial Downloads Program on https://www.adobeprerelease.com/
Watermarked developer release version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via https://console.adobe.io/downloads/id and InDesign Family SDK Download Program on https://www.adobeprerelease.com/
Windows 64-bit only
Release version: –
Installer version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via InDesign Family SDK Download Program on https://www.adobeprerelease.com/
Windows 32-bit and 64-bit available
Release version: –
Installer version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via InDesign Family SDK Download Program on https://www.adobeprerelease.com/
Windows 32-bit and 64-bit available
Release version: via normal distribution channels
Time-limited test: via the InDesign CC Server Trial Downloads Program on https://www.adobeprerelease.com/
Watermarked developer release version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
Debug version: via the InDesign CC Developers Prerelease program on https://www.adobeprerelease.com/
C++ SDK: via InDesign Family SDK Download Program on https://www.adobeprerelease.com/
Windows 64-bit only