Sometimes you want to slightly translate or scale an entire layout while maintaining the page size and a strict relationship between the pages and the contents. Of course you can take advantage of the Layout Adjustment feature if the layout is allowed to reflow in a framework based on new page margins and dimensions. But this is of no use if the layout is fixed in itself. What we would like is a general way of repositioning and/or scaling the whole piece on every page just as we transform an image in Photoshop.

A solution would be to manually group the objects and to repeat the desired transformations in seeking to match the final margins, but you can guess that this is not the option we recommend! A much more powerful tool is available, although inaccessible by regular InDesign means. In short, we change the inner scale and the inner coordinates of the pages without actually resizing nor moving them. (This is only possible in CS5 and CS5.5.)

Technical note. — The beginnings of TotalRescale germinated in an article I posted in August 2011, “Transforming spreads in InDesign”. Meanwhile I discovered an interesting property: unlike the Spread view, the Page view can be transformed independently of page items. Imagine you have the power to temporarily stretch an elastic page without distorting the objects it contains. When you print or export that page to its real-world size (i.e. not stretched), the objects become shrunken compared to their apparent size on the screen. That's basically how the script works. But I use an additional trick to prevent scaling from being perceptible on the screen: an inverse transformation is applied to the spreads. This way the user sees the actual size of the pages (unchanged) and the actual size of the objects at the end of the process. It seems to me a excellent illustration of combining spread space and page space transformations.

How to use TotalRescale

TotalRescale.js only works in InDesign CS5/CS5.5.

1) Start ID and open a document.

2) From the Pages panel, select the master page that exposes the margins of your current layout—these margins represent the original reference area.

Setup a rectangular template on the master page.

3) Create a rectangle on the master page. The bounds of this object will delimit the final area, i.e. the final margins of the layout. (The rectangle can be larger or smaller than the reference area, it can be proportional or non-proportional to the reference area, etc.)

4) Select the rectangle and run TotalRescale.js from your Scripts panel.

If you are working on a facing-pages document, the script offers you the option to apply a symmetrical template with respect to left-hand and right-hand page sides (as shown below). Instead you could choose to uniformly apply the template disregarding page sides.

Resulting layout. (The page size has not changed.)


1) As usual, THIS SCRIPT IS PURELY AND OVERTLY EXPERIMENTAL AND I DO NOT GUARANTEE it will work properly in any environment or configuration. Always make a backup of your document before you try.

2) TotalRescale relies on transformations that you CANNOT DIRECTLY OPERATE OR REVERSE FROM THE USER INTERFACE. Use this script when you have to adjust the final layout before exporting a document. It is highly inadvisable to use this script during the creation process.

3) Once the transformation is applied, InDesign may display dimensions, measurements or text size in RELATIVE units. This primarily depends on the “Transformations are Totals” option, and other similar settings.

4) This script DOES NOT support layouts whose pages vary in dimensions. It is assumed that the size of the pages is the same in the entire document.

5) When Baseline Grid alignement is activated, some lines MAY UNEXPECTEDLY SHIFT on the next page. This is very likely a rounding error caused by InDesign itself.