To be, or CSV, that is the delimiter

From time to time I receive emails requesting support for some of the scripts that I offer through the site. Since InDesign began to support semicolon separated text files for data merge, one particular issue began to receive more requests than normal.

The emails were consistent in nature – users had downloaded the data merge single or pro script and ran the script on files they had prepared. Instead of users being able to select from the fields to the left, all of the fields appeared in one line.

This behaviour usually occurs when the script runs a data merge database that had a CSV extension, but was actually separated by semicolons rather than commas. I’d explain this back to the user and ask them to try a different CSV export from Excel, or use my preferred file export of UTF-16 text from Excel.

However, many users who had exported from Excel to CSV said that this did not change the issue and the problem persisted. Usually the problem was that – despite choosing CSV from Excel’s export options, the software was still using semicolons as a delimiter rather than commas. Luckily, exporting to UTF-16 text usually resolved the issue.

On that note, I was uncomfortable with this issue and tried to replicate an Excel export from CSV that would use semicolons as delimiters rather than commas, but I couldn’t replicate this behaviour. But then I stumbled across the following article.

In short, the article says that Excel uses the user’s locale to determine what delimiter to use for CSV files. In short, if you use a comma to separate a dollar value from cents rather than a full-stop, then a CSV will likely export with semicolon delimiters rather than commas.

Adjusting this setting is not so simple, especially for Mac users like me – the adjustment is to change a system preference that uses the appropriate currency format, but that changes lots of other related information, so this isn’t an option.

Ultimately, if you are using the data merge to single record script, and are doing so with data exported from Excel, I highly recommend that you do so with a UTF-16 Unicode Text format.

I’ll admit this was a phenomenon I was unfamiliar with, and somewhat frustrated that a file format that itself stands for comma separated variables – isn’t actually separated by commas but is in fact separated by semicolons… depending on what system locale your computer is set to and that Microsoft Excel obeys.

Highlighting the benefit of GREP… literally

I’m a fan of the GREP feature of the Find/Change dialog box in Adobe InDesign as it allows me to search for patterns of characters within text based on regular expressions.

As handy as this feature is, I always require assistance writing my GREP searches, just in case my patterns are either too greedy; or not greedy enough. For example, I have a GREP search to find duplicate entries and remove them, but in InDesign the only way to know if I have this correct is to press the Find Next button in the search.

A better way to identify if I have my GREP search correct is to see it in real-time. Luckily, text editors such as BB Edit have this feature.

InDesign’s latest rival, Affinity Publisher, not only has its own flavour of GREP, but also shows all results in the Find and Replace dialog box, though I have to click on each result in this dialog to see where they are.

But it would be great if InDesign highlight the GREPs ahead of time like these two applications. The good news is that it can, but it requires the GREP editor script from Peter Kahrel that has been featured on Colecandoo before.

Thanks to Peter’s GREP editor, I’m now able to see that in this example there are three search results and they are all highlighted.

This tool comes in very handy as it assists me to write more complicated GREP searches, such as this one that is looking for time formatting. This lets me know in real-time if my selection is selecting too much information, or not enough – and in this example, it isn’t enough as the times without the minutes aren’t getting selected.

As for longer, more complicated chains of GREP code, there are resources out there that have pre-baked search chains that other users have already submitted to sites such as RegExLib.com or the Treasures of GREP Facebook group.

Stop Press!

After this article was initially published, I was alerted to another InDesign javascript by Kerntiff Publishing System that has a similar behaviour to Affinity Publisher’s search. The script is called GREP Xtra.

There is also an additional script released in 2013 by Roland Dreger that performs as a combination between Peter Kahrel’s script and the InDesign user interface. That script is called Highlight GREP.

Shortcut to rotate in fractions

A colleague of mine recently had a task of inserting lineart scans into an InDesign file and then rotating the images so that they were straight on the page.

During this process, he’d asked:

What’s the shortcut for rotating an image by a fraction of a degree?

While I can remember many of the shortcuts used in InDesign, I couldn’t remember a shortcut for this item, and after consulting my InDesignSecrets shortcut poster I realised that there isn’t one. There is a shortcut to increase the angle from 1 degree to 5, but not smaller increments… which I thought was something that people would have asked for by now.

For the task he was doing, he definitely needed one, otherwise the workflow was:

  1. Select the item to rotate;
  2. Go to the rotate tool;
  3. Type the fraction and click OK
  4. Check the result and if further adjustment was required, click back into the rotate tool and type a new fraction and try again until acceptable.

A shortcut would definitely make this easier.

Tomaxxi to the rescue

Luckily, one was easy to find online. Scripter Marijan Tompa (whom some may know by the name Tomaxxi) wrote an article on how to write such a script.

In my colleague’s case, the script only needed to be adjusted by changing the angle from 45 in Marijan’s example to 0.1 like so:

var myTrans = app.transformationMatrices.add({counterclockwiseRotationAngle:0.1});
var myObj = app.selection[0];
myObj.transform(CoordinateSpaces.pasteboardCoordinates, AnchorPoint.CENTER_ANCHOR, myTrans);

The script was saved as rotateAnticlockwise.jsx and added to the scripts. A second copy was made but this time adjusted from counterclockwise to clockwise like so:

var myTrans = app.transformationMatrices.add({counterRotationAngle:0.1});
var myObj = app.selection[0];
myObj.transform(CoordinateSpaces.pasteboardCoordinates, AnchorPoint.CENTER_ANCHOR, myTrans);<code>

This too was saved as rotateClockwise.jsx. and added to the scripts.

From here, my colleague could then go to the scripts palette and run the scripts as required.

Similarly, my colleague could make sure that scripts was checked from the quick apply menu.

And from here, go to quick apply by pressing Command + Return and typing the first few letters of the script. This choice would stay in the quick apply so need only be done once.

But the title of the article was a shortcut, so shortcuts had to be applied. That is easily done though by going to the Edit Menu and selecting Keyboard Shortcuts.

In the next dialog box, choose Scripts from the Product Area, navigate to the appropriate script, then place the cursor in the New Shortcut text field in the bottom right and press the keys to become the new shortcut. If the type beneath says [unassigned] it means it won’t interfere with other shortcuts, so click Assign. Do the same for both scripts, choosing different shortcuts for both.

Done. My colleague now had his shortcuts and could rotate the images without having to keep moving his cursor to the rotate panel and manually key in entries.

Given the scripts now had their own shortcuts, these were also visible in the scripts panel, just in case my colleague forgot what the shortcuts were.

But importantly because shortcuts were assigned, they could also be hot-keyed to his ergonomic mouse. Similarly, the commands could be hot-keyed to other inputs such as those discussed in a previous article.

On that note, I thought a shortcut like this would exist, given the amount of other shortcuts that allow for nudging/moving in smaller units. What are your thoughts? Let me know in the comments whether this is a specific use-case, or something to be pursued over at the InDesign suggestions.

Export many PDFs at once… plus security

A recent question on Reddit’s InDesign subreddit was whether two PDFs could be exported at the same time from the same document, but have two different properties – one with trims and one without. The answer is yes, but via a custom script written for the task.

I use such a script on a daily basis so that I can prepare a PDF for client proofing via email; and a separate PDF that has trim and crops that is sent directly to a hot-folder that prints it for me.

I’d submitted my script as a solution (that can be downloaded from the scripts page), but then realised that this concept was not a new idea. Ariel Walden over at ID-Extras had already written a similar script within a blog post of his own.

Similarly, Peter Kahrel’s Batch Convert script can perform the same task, with the added advantage that it can also do this for all open InDesign documents;

Or if no documents are open, a specified folder (and subfolders if desired) of InDesign files.

Can’t make these secure

One feature that all three scripts have in common is that the exports are based on the PDF presets available on the user’s machine. One feature that can’t be added to a PDF preset is security – this can only be done when a request to export the document is made, as security settings aren’t saved into PDF presets.

This is a problem if there are lots of documents that need to be exported with security settings as it requires the user to enter the security details each time a PDF is exported.

I’ve made an additional script

For this purpose, I thought I would make a script that not only makes several PDFs, but can also add password security to one version. The script can be downloaded from the scripts page.

When the script is run, it will generate two PDFs using different PDF export settings, but one will have the suffix “_secure” added to the filename, and a dialog box will appear once the export is finished:

Adjustability

The script can also be adjusted by opening the script in any text editing application and making the necessary changes, such as.

Use the same password for every document

Look for the line

    openDocumentPassword = myPassOpen; // requires a password to open the document

and change the myPassOpen to the desired password in quotations. For example:

    openDocumentPassword = "OpenSesame"; // requires a password to open the document

Similarly, do the same thing for the line underneath, making sure that the open password and edit password are not the same.

    changeSecurityPassword = myPassWrite; // requires a password to change the document

change to

    changeSecurityPassword = "EditSesame"; // requires a password to change the document

then search for the lines

dialog.show();
//alert("Done");

and swap the forward slashes in the lines around so that the lines now read like this.

//dialog.show();
alert("Done");

Only require a password to edit the document

Look for the following line:

    openDocumentPassword = myPassOpen; // requires a password to open the document

and add two forward slashes to the start of the line.

//    openDocumentPassword = myPassOpen; // requires a password to open the document

Adding two forward slashes to a line in a javascript tells the script to ignore the rest of the line and go to the next line of code.

Don’t show the “done” message

The default script has a dialog at the end for showing what the opening and editing passwords are, but if you want to edit the script so it makes a PDF that applies security to edit the document but does not provide the password (e.g. for the purpose of handing PDFs over to parties who may seek to deconstruct them in other applications) then make the adjustment mentioned a moment ago to restrict passwording to editing only, and then search for the lines

dialog.show();
//alert("Done");

and swap the forward slashes in the lines around so that the lines now read like this.

//dialog.show();
alert("Done");

Add more PDF exports

Look for the line

app.activeDocument.exportFile(ExportFormat.pdfType, File(resultsFolder + "/" + app.activeDocument.name.split(".indd")[0] + ".pdf"), false, "[High Quality Print]");

make a copy of the line and make the appropriate changes:

  • Replace the “[High Quality Print]” to the desired PDF preset exactly as it is written in the PDF export dialog box and put it in quotes. For example, if your PDF preset is called My Export then type “My Export”
  • Replace the “.pdf” with a suffix that denotes that this is an additional PDF. For example, if the pdf is a high res print, perhaps replace this with “_hi-res.pdf” so that the resulting file has _hi-res.pdf at the end of its filename.

Otherwise if you are after specific changes to the script to suit your needs, contact me via the contact page.

Things to know about the script

Opening and editing passwords must be different

One condition of preparing a secure PDF from Adobe InDesign is that the password required to open the PDF must be different to the password to edit the PDF, so if editing the script to replace the randomly generated password to a known one, the opening and editing passwords must be different. If the passwords are the same, the PDF will be made without security.

PDF Standard in the preset must be set to “None”

PDFs that use a PDFX standards can’t have security applied to them as the security panel of the PDF export box is greyed out, preventing security to be applied. The standards dropdown box in the desired PDF preset must be set to None.

Only password security is applied

When exporting a PDF from InDesign, only password security can be applied, unlike Adobe Acrobat’s choices of security that it can offer (as shown below).

While password security may deter or prevent a layperson from editing the PDF, the security can be broken through some effort. Several websites offer services where users can drag and drop a PDF to the site, and within moments the PDF will have the PDF password removed.

Similarly, there are desktop applications that can also be purchased to remove the security (as one of their many features), such as PDFsam Visual.

%d bloggers like this: