InDesign User Settings

InDesign 2024 gained a feature to export and import user settings.

I poked around a bit, and found out that the exported file is a SQLite3 database.

That means you can open it up with a SQLite viewer/editor. I am using DB Browser for SQLite on my Mac:

https://sqlitebrowser.org/

Below some very preliminary findings – there is still much to be explored.

First of all, I added a .sqlite file name extension to the exported file, and that does not seem to affect InDesign – I can still load the preferences back into InDesign, with the benefit that double-clicking the exported file now opens the file in DB Browser.



From my first few experiments looks like I can edit and delete swathes of data with the SQLite editor, then re-load it into InDesign without problems, and manual tweaks in DB Browser get transported back into InDesign.

Interesting!

Next

If you’re interested in automating part of a Creative Cloud-based workflow, please reach out to [email protected] . We create custom scripts, large and small, that can speed up and take the dread out of repetitive tasks.

If you find this post to be helpful, make sure to give me a positive reaction on LinkedIn! I don’t use any other social media platforms. My LinkedIn account is here:

https://www.linkedin.com/in/kristiaan


Developer Roundtable at the Creative Developer Summit, Phoenix, June 4-5 2025.

The planning for the next Creative Developer Summit is underway; I’ve already got a few commitments.

If you’re a software developer working within the creative realm, or a creative professional with an interest in scripting, this is an independent summit by the developer community for the developer community.

More info about the summit a previous LinkedIn post:

https://www.linkedin.com/posts/kristiaan_why-you-need-to-attend-the-creative-developers-activity-7262566643443118081-4V6f?utm_source=share&utm_medium=member_desktop

Unlock Real-World Insights Beyond Code

Brett Kizner gave me an interesting idea: why not run a round table covering the non-technical issues we all face?

The idea is something like this: a special closed-door session exclusively for developers. This private, developer-only roundtable would offer a unique opportunity to discuss the business challenges we all face — the ones you won’t find in any technical manual.

What We’d Cover:

Client Management: Strategies for handling large clients that pay on 30, 60, or 90-day terms — often late.

Marketing Your Skills: Best practices for promoting yourself through word of mouth, websites, LinkedIn, and beyond.

Setting Your Rates: Hourly rates vs. retainers — what works, what doesn’t.

Streamlining Paperwork: How to manage contracts, invoices, and administrative tasks efficiently.

Handling Tech Support: Tips on scaling support while staying focused on development.

Productizing Your Knowledge: Turning your expertise into marketable products.

Selling Scripts and Plugins: Navigating Adobe Exchange and exploring alternative sales channels.

Why Attend?

Real Talk, Real Solutions: Share and learn from peers who’ve been in the trenches.

Confidential Environment: Conducted under Chatham House Rules — what’s shared stays within the group.

Actionable Takeaways: Leave with concrete ideas you can implement immediately.

This session will not be recorded, ensuring an open and candid exchange of experiences and strategies.

Understanding Meta-Data in InDesign

What the meta?

Have you ever spotted the Script Label panel in InDesign, under the Window – Utilities – Script Label menu item?

What’s that all about?

Let’s think about an InDesign document for a moment. What do we find in such a document? Text frames, image frames, stories, images…

It’s all data. All that data constitutes document content. This data contributes to the final output.

However, sometimes we might have a need to handle another type of data for the document. We call it ‘meta-data’ – which is a fancy way of saying ‘data about the data’.

For example, you might be wanting to leave some comments or notes in the document. Little reminders – ‘need new image here’, or ‘please replace with high-res image’.

Such comments or notes are part of the document, but not part of the content of the document. To help us more easily talk about this second kind of data, we call it meta-data, data about the actual data. Meta-data is not part of the output.

Why the meta?

Meta-data comes in handy in many scenarios. Notes and comments are but one example.

We can attach meta-data to a document, but we might also want to attach it to individual page items, or to individual bits of text.

InDesign provides a number of mechanisms to handle meta-data. I’ll mention a few – the list below is not exhaustive.

Starting simple: you can put information in a text frame on the pasteboard. That is often meta-data.

Another one: info in a slug area. That can also be seen as meta-data.

You can mark up text and page items with XML tags (Window – Utilities – Tags and View – Structure – Show Structure). Those tags are also meta-data.

Script Labels Are Meta!

Another one: script labels. You can assign script labels to individual page items.

Bring up the Script Label panel, and select a page item. Type something in the panel.

Select another page item. Type something in the panel.

Select the first page item again. You’ll see that the respective script labels remain associated with the page items and when you save the document, these script labels will be stored into the saved file as well.

These script labels can be used any which way we see fit.

InDesign itself does not need nor use the script labels, so you could for example use them to attach little notes to individual page items.

Another way script labels are often used is to ‘tag, you’re it’ individual page items for the purpose of a script.

If a custom script needs to process specific page items, the developer might use the Script Label panel for tagging, such as labeling a text frame ‘CalculationResult’ for processed output.

If you are developing scripts yourself, or working with a script developer, when you find there is a need to tag or classify individual page items, think of script labels!

See the meta?

A quick mention of our plug-in: FrameReporter. It lets you visualize various data and meta-data directly on the page, reducing the need to check multiple panels.

If you work with scripts that rely on the script label for tagging page items, FrameReporter comes in real handy to quickly identify and verify the script labels on the page items.

https://rorohiko.com/wordpress/framereporter-for-indesign

Next

If you’re interested in automating part of a Creative Cloud-based workflow, please reach out to [email protected] . We create custom scripts, large and small, that can speed up and take the dread out of repetitive tasks.

If you find this post to be helpful, make sure to give me a positive reaction on LinkedIn! I don’t use any other social media platforms. My LinkedIn account is here:

https://www.linkedin.com/in/kristiaan

How to get the absolute path of the currently running UXPScript

Neat trick: how to get the path to the current script file in UXPScript.

Initially, I tried __filename and __dirname, but those returned ‘sandboxed’ paths, i.e. paths that were relative to the script’s parent folder.

Instead, I wanted the full path.

I asked ChatGPT for help, and it came up with a neat trick: throw an error, then analyze the stack trace and extract the path from there.

That works!

Here’s the current implementation in CRDT_UXP:

https://github.com/zwettemaan/CRDT_UXP/blob/ce7333a2cb671798c8fed75c9571be9df5b91ce9/CreativeDeveloperTools_UXP/crdtuxp.js#L3523

To use: simply call

let curScriptPath = crdtuxp.getCurrentScriptPath();

Next

If you’re interested in automating part of a Creative Cloud-based workflow, please reach out to [email protected] . We create custom scripts, large and small, that can speed up and take the dread out of repetitive tasks.

If you find this post to be helpful, make sure to give me a positive reaction on LinkedIn! I don’t use any other social media platforms. My LinkedIn account is here:

https://www.linkedin.com/in/kristiaan

Github and HTML Documentation Files

In the past, GitHub used to serve HTML documentation files as source code rather than rendering them as web pages, making it challenging to view generated documentation directly.

Apparently, this has changed some time ago – and HTML documentation files can now be viewed directly in the Github repository.

The feature is called Github Pages; you need to enable it from the repository settings.

You need to point it to the subfolder where the documentation is, and that makes the documentation available on an associated URL.

I’ve enabled this for Creative Developer Tools for UXP and ExtendScript:

https://zwettemaan.github.io/CRDT_UXP/crdtuxp.html
https://zwettemaan.github.io/CRDT_ES/crdtes.html

This documentation link is associated with the repos at

https://github.com/zwettemaan/CRDT_UXP
https://github.com/zwettemaan/CRDT_ES

Next

If you’re interested in automating part of a Creative Cloud-based workflow, please reach out to [email protected] . We create custom scripts, large and small, that can speed up and take the dread out of repetitive tasks.

If you find this post to be helpful, make sure to give me a positive reaction on LinkedIn! I don’t use any other social media platforms. My LinkedIn account is here:

https://www.linkedin.com/in/kristiaan

InDesign Server 2025 OMV File

Here’s how to browse the InDesign Server 2025 ExtendScript DOM in ExtendScript Toolkit on Windows.

Download and unzip this this file:

Next, an image is worth a 1000 words, see below. With a little luck, you now know what to do.

If not, find me on LinkedIn (see below) and I can help you out.

Next

If you’re interested in automating part of an InDesign- or InDesign Server-based workflow, please reach out to [email protected] . We create custom scripts, large and small, that can speed up and take the dread out of repetitive tasks.

If you find this post to be helpful, make sure to give me a positive reaction on LinkedIn! I don’t use any other social media platforms. My LinkedIn account is here:

https://www.linkedin.com/in/kristiaan

InDesign: Insert Any Unicode Character FAST

Imagine you need to repeatedly insert a specific Unicode character, some character that is not easily accessible from the keyboard.

There are many ways to do it.

You could use the built-in Character Map on Windows, or the built-in Character Viewer on Macintosh and copy-paste the characters into InDesign.

Or you could copy-paste the characters from some example somewhere.

But all of that is fiddly and finicky. If you need to type A LOT of the same Unicode characters, there’s a faster way.

InDesign Community Scripts

There is a quicker way, bundled with InDesign. There is a bit of configuration to be done, but once it’s configured, you can insert any Unicode character or even a string of Unicode characters with just a single keystroke.

The magic happens by combining a script with InDesign Keyboard Shortcuts.

On your scripts panel, there is a section called Community, and in that section you can find UnicodeInjector.jsx.

It’s a free script I created a few years back and it was deemed useful enough to be bundled with InDesign.

There’s one bit of a gotcha: this script does not work… as is.

To make UnicodeInjector.jsx work, you need to rename it. The script knows what it needs to do by looking at its own file name. If you simply rename a copy of UnicodeInjector.jsx to Insert U+20AC.jsx, you created a brand new script! You are a scripter now!

And you can create as many copies as you want – each with a different name.

Put a text cursor into a text frame, and then run the new script, and it will do what the name says, and insert U+20AC which is a € (EURO SIGN).

The hiccup is that the InDesign Community scripts folder is read-only. You need to first copy UnicodeInjector.jsx from the Community folder into the User script folder, and then rename it.

Once you’ve got a set of brand new script in your User scripts, you can assign a keyboard shortcuts to them.

Much more info here:

https://rorohiko.com/wordpress/manuals/unicodeinjector-easily-insert-any-unicode-character-into-indesign/

I also made a little YouTube demo a while back:

Next

If you’re interested in automating part of an InDesign- or InDesign Server-based workflow, please reach out to [email protected] . We create custom scripts, large and small, that can speed up and take the dread out of repetitive tasks.

If you find this post to be helpful, make sure to give me a positive reaction on LinkedIn! I don’t use any other social media platforms. My LinkedIn account is here:

https://www.linkedin.com/in/kristiaan

InDesign Data Merge Refuses Data Source

While I was working on a demo for TextStitch and InDesign Data Merge, I bumped into a weird phenomenon: some of my sample Data Source files were not recognized by InDesign.

I had created a small table with some data in Excel on my Mac, and I exported that file into CSV UTF-8 (Comma Delimited) format, using the File – Save As… menu.

When I tried to use this file as a Data Source in InDesign Data Merge it complained the file was not suitable.

Strange!

I then went back to Excel and exported the same spreadsheet as Tab Delimited Text. And that worked just fine!

I also tried saving the spreadsheet as Macintosh Comma Separated Values and that worked fine too.

I then compared the two CSV files using my text editor (I used BBEdit), and at first glance, they looked identical.

Why would InDesign Data Merge accept one, and not the other?

Notice the difference? The secret is the BOM character. BOM stands for Byte Order Mark.

These are three invisible characters at the start of the file: 0xEF, 0xBB, 0xBF, to allow other programs to more reliably guess a file as being encoded in UTF-8.

You might notice the two files also have different line endings (CR vs CRLF) but that is not a problem for Data Merge.

Workarounds

If you have a file that gets refused by InDesign’s Data Merge, you can work around the issue in many ways.

You could re-export the file differently if the source data is available to you. If there are accented characters in the data, you might want to use UTF-16 if it is available as an export option.

Or you can use a sufficiently capable text editor (like BBEdit or NotePad++) to open and re-save the file without the BOM.

On Mac, you want to re-save the file using the MacRoman encoding, or UTF-16 instead of UTF-8.

On Windows, you want to re-save the file using Windows-1252 encoding or UTF-16 instead of UTF-8.

This is because InDesign’s Data Merge does not handle UTF-8 encoded text.

For diagnosing these issues, I often use a hex editor program; using a hex editor, the BOM character is easy to detect and delete.

Below some screenshots from Hex Fiend

Next

If you’re interested in automating part of an InDesign- or InDesign Server-based workflow, please reach out to [email protected] . We create custom scripts, large and small, that can speed up and take the dread out of repetitive tasks.

If you find this post to be helpful, make sure to give me a positive reaction on LinkedIn! I don’t use any other social media platforms. My LinkedIn account is here:

https://www.linkedin.com/in/kristiaan

Second Gear

It’s not going to take my job

I’ve been using ChatGPT (and Copilot and similar) a fair bit while doing software development, and generally speaking, it makes me more efficient.

However, the more I use it, the less I am worried that some AI will ‘take my job’.

The more I use it, the more I see it as a fancy search engine.

It’s great for learning new stuff: if I need to get up to speed in a software development environment that I know very little about, it’s a great help.

However, as soon as the going gets tough, it becomes a confident bullshit generator.

Every single time I ask it a slightly more complex question, the answer seems to make sense, yet the answer is just wrong. Or it gives me a naive, impractical or overly complex solution.

I always have to carefully scrutinize what it came up with.

Me: ‘Hey, wait a minute: what happens if this or that situation arises? Will your solution actually work’?

And then ChatCPT will say ‘You’re absolutely right, well spotted, good job! Yeah, that would not work, eh. Here’s a different incorrect solution’.

It sure knows how to flatter.

With some coaxing ChatGPT will provide me enough raw material to work it out, but it cannot really fit all the pieces together. Keeping things as simple as possible but not simpler – that’s way beyond what it can do.

It’s a search engine, and it rehashes stuff it found on the internet.

Any time some real thinking is needed, it becomes a confident bullshit generator.

Engage Second Gear

While I am working, I feel that my brain has two gears.

First gear is ‘stuff I know off the top of my head’.

Second gear is ‘stuff I need to do some thinking about before I answer’.

In my normal day I’ll often need to switch into second gear, and do some thinking. Switching into second gear takes mental effort.

Depending on the complexity of the problem at hand, I might spend whole days stuck in second gear. I might need to go on long walks, mumbling all the way, brain in second gear, before I eventually figure something out.

The danger with ChatGPT is that it often allows me to comfortably remain in first gear, and not engage second gear as often.

For me, the challenge ahead is to make sure second gear gets used often enough, or else risk losing the ability.

So, I’d say: stay sharp, stay inquisitive, stay sceptical and make sure to have a big jar with salt at the ready. You’ll need it!

Understanding IDML

InDesign’s native file format (.indd) has a number of drawbacks, some of which can be worked around by way of an alternative file format, IDML (.idml).

IDML stands for InDesign Markup Language. It is an XML-based file format for InDesign.

You can think of an IDML file as a sequence of step-by-step instructions for InDesign. A little bit like

"Create a new document, facing pages, A4 page size"
"Start page numbering at page 2"
"Create a text frame on page 2"
...

but with much more detail and accuracy.

Opening an .idml file will make InDesign follow instructions and rebuild a brand new document from scratch.

InDesign .indd Versioning Issues

For the sake of argument, I’ll be referring to InDesign Old as the ‘older’ version and InDesign New as the ‘newer’ version. E.g. Old could stand for ‘2024’ and New could stand for ‘2025’, or something similar.

Some of the drawbacks of the native .indd format are that it is version-specific, not backward-compatible, and only partially forward-compatible.

.indd is a binary format, and between different versions of InDesign, the bits and bytes in the file are organized in slightly different ways, to allow for storing data related to various new features that have been introduced into InDesign New.

Not backward compatible

If you create a document using InDesign New, and save it, you won’t be able to open the resulting .indd file with InDesign Old.

InDesign Old is old, and hence ‘unaware’ of any new features that InDesign New has and cannot cope with the additional bits and bytes that have been inserted to cater for InDesign New.

Partially forward compatible

InDesign New can open files created by InDesign Old, but the compatibility is not quite 100%.

Most people don’t notice the occasional slight oddity in how InDesign handles File – Save and File – Save As… when it comes to opening and saving documents, but being aware of what’s going on will help you make sense of some odd behavior in InDesign.

When you re-open a document created by InDesign Old in InDesign Old, i.e. the same version, the File – Save menu item will be available. Once the document is open, it remains associated with the .indd file on disk, and File – Save overwrites the .indd file with the updated document.

When you open a document created by InDesign Old in InDesign New, it’s different: the File – Save menu item will be not be available.

Once the document is open in InDesign New, it is not associated with the .indd file on disk. You are forced to use File – Save As… to save the document.

You’re free to use File – Save As… to overwrite the existing .indd file, and doing so will upgrade the existing .indd file from version Old to version New. After that, you cannot open that .indd file with InDesign Old any more.

All of this because rather than opening the document, InDesign New has rebuilt a brand new, lookalike document from scratch. This brand new document is not tied to the .indd file that was created by InDesign Old. That’s why you need to use File – Save As… and cannot use File – Save.

IDML Solves Versioning Issues

Because an .idml file is just a sequence of instructions, we can go back to an older version of InDesign. The .idml can be created from InDesign New and interpreted by InDesign Old.

When InDesign Old comes across any instructions related to new features from InDesign New, InDesign Old will simply ignore any instructions that it does not understand.

And if the document created in InDesign New did not use any of the features that are specific to only InDesign New, opening the .idml file in InDesign Old would not cause anything to be lost in translation.

Note that opening an .idml file will also force you to use File – Save As… rather than File – Save: after InDesign has worked its way through the instructions in the .idml file, you’re left with a brand new document and the File – Save menu item is not available.

IDML does not retain text flow

One of the drawbacks of the way IDML works is that things like the exact text positioning, hyphenation and justification and other features are not controlled by the .idml file.

Given the same set of threaded text frames and the same text, there might be a discrepancy between how the text flows in InDesign Old vs. InDesign New and the same .idml document can end up looking different when opened in different versions of InDesign.

The exact same instructions in the .idml file can lead to different end-results in different versions of InDesign.

How it works

Diving a bit deeper, you can see IDML is a compressed .zip archive file which contains a collection of XML files, each XML file describing different aspects of the document. There are XML files with stories, styles, spreads…

These files, taken together, contain the instructions needed to recreate the InDesign document.

That also means that editing any one of these XML files would change the corresponding aspects in the InDesign layout. This allows software developers to inject new or modified data into an InDesign template that is saved into the .idml file format.

Round-Trip Workflow

One practical way to leverage IDML is through a round-trip workflow: convert an IDML file to plain XML, edit the XML, and bring it back into InDesign.

Unzipping an .idml file to inspect it is easy: simply change the file name extension of the file from .idml to .zip and you will find that the file is now just a .zip archive with a bunch of XML files and folders in it.

The reverse operation is not as straightforward: converting a folder with a collection of files and folders back into an .idml file is more finicky, as there are some quite specific requirements for the ‘zipping’ process.

The Oxygen XML Editor is able to do ‘direct edits’ into .idml files: you can browse ‘into’ the .idml file and experiment with tweaks to the XML files.

https://www.oxygenxml.com

Another option is the free eCanCrusher tool: you can drag/drop an .idml file onto the app to ‘unzip’ to an .idmlf folder, and you can then tweak the XML files.

Then revert back to an .idml by drag/dropping the unzipped folder, and eCanCrusher will convert the whole folder back to an .idml file.

eCanCrusher was originally only meant for handling .epub files, but as it so turns out, .epub and .idml files are very similar in how they are actually just .zip archives with a bunch of text files in them.

https://www.docdataflow.com/ecancrusher/

Next Steps

If you’re interested in finding out more about .idml there is a lot of material within reach – search engines and the Adobe Forums are your friend.

If you’re interested in automating part of an InDesign- or InDesign Server-based workflow by way of IDML, please reach out to [email protected] if you’re interested in a hands-on custom training, or want some help (‘training wheels’) as we help kick-start your project.

If you find this post to be helpful, make sure to give me a positive reaction on LinkedIn! I don’t use any other social media platforms. My LinkedIn account is here:

https://www.linkedin.com/in/kristiaan