Archive

Archive for the ‘InDesign Scripts’ Category

Selection order is back in CS5.5!

When I started scripting, about a year ago, I was really frustrated that app.selection didn’t returned correct selection order I used while selecting objects, instead, it returned sorted selection by object ID’s. To make things even worse, just few versions back, app.selection DID returned correct selection order! So, somebody messed things really bad! 😦
Read more…

Advertisement

Script: tomaxxiLAYERS® / Add Layer Sets to Document [UPDATED]

As you probably know, layers really important when creating complex layouts. Layers in last version of InDesign (CS5) are radically improved! Till now, you could just manage top-level layers, but starting with CS5, top-level layers can be expanded and you can see complete object structure! (for more info about layers in CS5, read great article written by Steve Werner on InDesignSecrets [Hidden Gems: The Layers Panel in CS5]) That’s really great! But, main limitation is that we are not able to set “default” layers for every new document. But! That’s why we have scripts! 😀

Read more…

Easy way to UnEmbed all Embedded links

Have you ever received document with all links embedded into it? It’s not everyday scene, but it happens, and InDesign has option to unembed link(s) to folder.

But, if you have bunch of links, you need to sort them first, select just embedded ones and then click Unembed Link from Links panel menu, or from context menu. But, it can be done much more easily with help of short script! Let’s see how! 🙂

Read more…

Script: tomaxxiPLACE® 2 / Choose Object Style while Placing

Well, just two days after releasing tomaxxiPLACE® I realized that it can be done way more easily and efficiently! 😀 So, here it comes, new version of tomaxxiPLACE®!

So, what’s so special about this “new version”?
Read more…

Script: tomaxxiPLACE® / Choose Object Style while Placing

Like I said, it’s new year, new beginning, I’m full with new ideas, and I hope that this year will be awesome like last was, so, here is another really cool script that will help you overcome BUG which was mentioned here: Auto Apply Object Style to Placed Image. 😀

Also, you will not need special “Place Fun Frame” Object Style to apply desired object style while placing objects, and you will be able to even select different while placing multiple objects. Really?! Well, yes, I hope so! 😀

Read more…

Saving Script Data using JSON [Part 2]

When building complex scripts with lot of options that user can choose, it’s always great to allow user to also save selected settings and reuse them on next launch. We already discussed about this topic in earlier post [Saving script data within document] but I recently found better way for serializing and storing data.

In first post, I used simple “*” to separate multiple values, and at load time used split(*) to separate values back to Array. That’s not bad, and it’s working fine, but there is another much more elegant solution!

What is JSON? JSON (JavaScript Object Notation) is a lightweight data-interchange format in other words it’s Associative array. It is, among other things, a faster, simpler, easier-to-use alternative to XML. More info about JSON can be found here: Introducing JSON. That’s great, but how to use it in InDesign?! How to save/load values?

I created short sample to demonstrate usage and shortly explain how it works. Of course, you can extend it as you wish! So, let’s get started! 😀

Read more…

QuickTip: Find Object Properties Quickly

Finding properties in OMV (Object Model Viewer) can be really painful, and slow. Personally, my best friend when writing scripts is Theunis de Jongs (aka Jongware) InDesign JavaScript Reference Guide but also trying to remember connections between objects and when to use which property, class, method… But, there is also another way to find out what properties you can use, and it’s already built in. Key is in Object reflection! So, let’s take a look how to put it in use! 🙂

Read more…

QuickTip: Counting Text using everyItem()

Counting words and also paragraphs, stories, characters is something pretty easy to achieve, but very often done in wrong way. Most of the time, people are looping through stories, text frames, paragraphs and adding word count. That is OK, for short documents, with short stories, but as document length increases, script needs more and more time to loop through all stories, and get all words. People are forgetting about awesome method called everyItem! Method 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. It allows us to get all elements within collection. For more info about everyItem method be sure to check two awesome articles by Marc Autret: On ‘everyItem()’ – Part 1 and On ‘everyItem()’ – Part 2. So, let’s take a look how everyItem method can help us count stuff. 🙂

Read more…

QuickTip: Loading Files to PlaceGun

After long time here comes new post about InDesign scripting! 😀

This one is really cool and handy. Simply select files and script will load them directly into PlaceGun tool! Really simple and handy! Also there are some options that you can set while loading files into PlaceGun, but we will just focus on simple loading. One more thing. InDesign CS5 DOM introduced new class that is directly connected to PlaceGun. It has some more options like: abortPlaceGun and rotate among others. So, let’s get started! 😀

Read more…

Panel: Adobe XMP panel for InDesign CS5

Almost every media file contains info about it’s contents. Adobe’s XMP (Extensible Metadata Platform) is, as they say, “a labeling technology that allows you to embed data about a file, known as Metadata, into the file itself”.

This was text part for first post about reading and writing XMP data. Metadata is powerful and you can store all kind of data. Some most common used fields are: Document title, Author, Author Title, Description and Keywords.
Read more…

Panel: Selection Count [for InDesign CS5]

For me, most annoying thing in InDesign is that you CAN’T see or find how many object I have selected. Even “Info” panel is not showing that info!

WHY?!

So, I decided to create small panel that shows you number of currently selected objects. It will not count objects inside groups.

Hope you will find this panel useful and handy! 🙂

Read more…

News: ScriptUI for dummies by Peter Kahrel [PDF]

At last! Real ScriptUI manual is alive thanks to Peter Kahrel, all that wrapped up into search able PDF with example pictures on the side.

Here is part of announcement from Peter’s page:

ScriptUI is a module in the Adobe CS family (starting in CS3) with which dialogs can be added to scripts written in JavaScript. The module is included in each version of the ExtendScript Toolkit, and dialogs written in it can be used in scripts targetted at all CS applications. Though this guide deals only with InDesign as a target application, virtually everything covered here applies to scripts written for all CS apps too. This guide is for scriptUI only: it is assumed that you are more or less proficient in JavaScript.

Read more…

Categories: InDesign Scripts, News! Tags:

Panel: tomaxxiBROWSE [panel based web browser for InDesign CS5]

Few days ago, my very good friend Martinho da Gloria posted picture that inspired me. It was picture of web of panel based web browser inside InDesign CS5! It was simple, just with address bar and page window, and I decided to expand it little bit more. I added back/forward, refresh, stop buttons, little menu with some useful links. Hope you will find it useful as much as I do! 😀

Read more…

Script: FontReporter® 2 / Collect used Fonts Info from multiple files

[UPDATED]

Do you need information about fonts used in your document(s)? Do you want to check is some fonts missing in a more than one file? You can do that with FontReporter®!

Read more…

QuickTip: Copy Script Labels to Item Names [CS5]

September 20, 2010 2 comments

As you probably know, in CS5, it’s really pain to work with Script Label‘s, and there is no easy way to address objects by Script Label. In pre-CS5 versions of InDesign, with item() we’ve received element Script Label but in CS5 we receive element name from Layer‘s panel. Using script versioning we can achieve pre-CS5 behavior, but it’s not really safe. So, why not copy all existing Script Label‘s into Layer‘s panel element names? 😀

Read more…

Categories: InDesign Scripts Tags:

QuickTip: Turn Off All Caps in Panel Names through Script

September 17, 2010 3 comments

Inspired by yesterday post about making Panel Names to Title Case, I made small script to help you enable/disable this feature (Easter Egg) through scripting. What script actually does? It checks if folder “noallcaps” exists in InDesign start up folder, and depending on our selection it creates/removes folder. I also added check for folder contents, so if there are files inside, folder will not be deleted.

You can download script here:

That’s it!

Have fun! 😀

QuickTip: Turn Off All Caps in Panel Names

September 17, 2010 6 comments

Are you annoyed with all panel names in All Caps?! There is really easy way to turn them into Title Case! Tested with InDesign and InCopy CS4 and CS5!

Be sure you check out Don’t Like All Caps in the Interface? Try This For Some Relief on InDesign Secrets website!

Have fun! 😀

Copy All Anchored/Inline Objects to a New Layer

September 16, 2010 5 comments

Few days ago on Adobe’s InDesign Scripting forum I found question about duplicating all anchored and inline objects to another layer. It’s quite simple task, and all we have to do, is to get all page items, and check item parent. If parent is Character, then it’s anchored/inline object. So, let’s take a look! 🙂

Read more…

QuickTip: Calculate Script Execution Time

Building some complex script, have multiple variations of same part of the script, and want to know which one is faster? This little function is perfect for you! Take a look! 😀

Read more…

Categories: InDesign Scripts Tags:

Storing custom data into InDesign file via XMP

Storing data within InDesign document is possible with insertLabel() but there is another place to save information about document. As we know, all InDesign documents have metadata stored in file itself. For more info take a look at other Metadata related posts listed at the end.
We are able to insert our own data into Industry standard namespaces, but also we can create our own namespace, and insert data into it. We will go through few examples. So, let’s start! 🙂

Read more…

QuickTip: Insert Text Variable to Text Frame

Wanna insert text variable to text frame through scripting? No problem. It’s fast and easy! 😉 Question about this showed up about one week ago on Adobe’s InDesign Scripting forum, and I was also curious how to do it. I don’t want to write much, so, let’s go down to business 😀

Read more…

Fill InDesign XMP info from document content

A few days on Adobe’s InDesign Scripting forum I found question about inserting info into XMP InDesign file info. Also, mission was to find text formatted into specific paragraph style, and insert found content into XMP’s ‘Document Title’. Easiest way to achieve this is to use ‘Find’ and search for paragraph style. But, I also wanted to insert some more info into XMP like keywords or author, through scripting. So, I created document with some text from Adobe InDesign Features page, created two paragraph styles for Title and Author, and character style for keywords. So I formatted title and author with paragraph styles, and also I ran through text and formatted some words with ‘Keyword’ character style. So, let’s see how it works! 🙂

Read more…

Extract file preview stored in Adobe XMP data

Some of Adobe file format’s (INDD, PDF, AI) are using Metadata to store low-res preview of file inside file itself. For example InDesign allows you to select how many pages do you want to include in these previews and also preview size/quality. We have to keep in mind that data is not stored in binary format. It’s stored in, so called, Base64 encoding scheme, that represent binary data in an ASCII string format. So, in addition to extracting data we have to decode it to binary, and then save it to file. So, let’s get started! 🙂

Read more…

QuickTip: Check if a number is between two numbers

In JavaScript I always miss one great feature from MySQL and that is operator between. It checks if a number is between two numbers you enter. So I decided to create small ‘Number’ prototype to achieve this. If a number is between is between then it returns true, and if not returns false. It’s perfect for using in ‘if()’ statements.

Read more…

Categories: InDesign Scripts Tags:

QuickTip: Check if a number is even or odd

How to check if a number is even or odd? We can use Modulus operator (%), which returns the remainder of a division operation. If you divide some number by two, a remainder of 0 indicates an even number, while a remainder of 1 indicates an odd number. Best and easiest way is to create ‘Number’ prototype.

Read more…

Categories: InDesign Scripts Tags:

Import Styles from file

Do you want to import styles from other document through scripting? It’s really easy to achieve, and you also have control about overwriting styles with same name. Also, you can import all kind of styles, you are not limited to just Paragraph or Character styles. We will take a look to the style ‘importStyles()’, but I also prepared short example how to implement it in dialog. Also, keep in mint that we can import to the document or to the application. So, let’s get started! 🙂

Read more…

Find/change missing font with scripting

Does this image looks familiar?! Do you want to change missing font through scripting? Then I have good news for you, it can be done really fast and easy! We are going to look easiest way for retrieving missing fonts from document, and also I will share this script integrated into dialog and font selector. This idea came up to me yesterday while I was studying ‘BeforePrint.jsx’ from Scripting guide that you can download from Adobe InDesgin scripting page. Also, Marc Autret posted script on Adobe’s InDesign Scripting forum for changing missing fonts inside styles, so be sure you check it! So, let’s get started! 🙂

Read more…

Custom ScriptUI Text Insert Menu

Few days ago on Adobe’s InDesign scripting forum I found question how to create custom menu to insert predefined text items into ScriptUI text box. I started to research and found really easy and good way you achieve this handy “menu”. All we need is dropdown and short script for controlling insert behavior.

Read more…

Prevent executing menu items

Well, this is almost ‘Most Wanted’ snippet around 😀 Have you ever wanted user to prevent executing some menu item? I did, but I didn’t had answer how to do it. There is no way to disable menu item, but what we can do is to cancel executing it. What we are going to do is to add event to ‘menuActions’. So, let’s take a look.

Read more…

Add icon to dropdown/listbox items

Have you ever wanted to add a dropdown/listbox item but with icon beside? This is not really possible with native InDesign dialog manager, but it can be done with ScriptUI! It’s really easy to achieve this great little feature. So, let’s take a short look how to do this. 🙂

Read more…