The File > Print Booklet… system in Adobe InDesign is slick, but (as of CC 2017) it can’t directly print the resulting booklet to PDF. The “workaround” is to print to a PostScript file, then run it through Distiller. This is fine if you have Distiller, but even so, not terribly convenient.
This page gives an AppleScript that will reorder your pages in InDesign so they’re suitable for printing saddle-stitch-ready spreads to PDF.
Table of contents:
Simply put, the idea is to take a bunch of pages that are in their ‘natural’ order, and reorder them so that the spreads are suitable for saddle-stitch printing.
Before the script:
After the script:
The large page numbers in the centre are the original page numbers (which I typed in for this demo).
The pages needn’t necessarily be facing. Here is an example with 8 non-facing pages:
Before the script:
After the script:
You must have a multiple of 4 pages to use this script (since that is required for 2-up saddle-stitch).
Here is the script, ready to paste into the AppleScript Script Editor. You may need to adjust the first line to reflect the name of the InDesign version you’re using.
This has only been tested with InDesign CC 2017.
tell application "Adobe InDesign CC 2017" tell active document -- Grab a list of the current pages and their IDs set pageList to {} repeat with thePage in (get pages) set end of pageList to id of thePage end repeat -- Check page count sanity set pageCount to the length of pageList if pageCount mod 4 ≠ 0 then display dialog "The number of pages must be a multiple of 4." return end if -- Allow pages to roam free tell document preferences set allow page shuffle to false end tell -- Check for a silly corner case (do you really need a script to move a page or two? ;-) if pageCount = 4 then move the last page to before page 1 binding left align -- Only necessary if using non-facing pages, but does no harm if facing already move the last page to after page 3 binding right align return end if -- Move odd pages set targetPage to 4 set pageIncr to 4 repeat with srcPage from 3 to (pageCount - 1) by 2 move page id (item srcPage of pageList) to after page id (item targetPage of pageList) binding right align -- In this way, targetPage will be (eg for 12 pages) -- 4, 8, 10, 6, 2 set targetPage to targetPage + pageIncr if targetPage = pageCount then set targetPage to pageCount - 2 set pageIncr to -4 end if end repeat -- Move even pages (slightly easier now) set targetPage to pageCount - 3 set pageIncr to -2 repeat with srcPage from 4 to pageCount by 2 move page id (item srcPage of pageList) to before page id (item targetPage of pageList) binding left align -- This is rather simpler (eg for 12 pages) -- 9, 7, 5, 3, 1 set targetPage to targetPage + pageIncr end repeat end tell end tell return
TODO: Add Script Editor colours. :-)
Feel free to contact me with any questions, comments, or feedback.