Control Script: Page numbering

This topic explains how to write a Control Script that changes the page numbering in Print sections. Note that when you add a Control Script, it already contains a script to make the page numbering continue over all Print sections.

For information about Control Scripts in general, see Control Scripts and Control Script API. If you don't know how to write scripts, see Writing your own scripts.

How to change page numbering in a control script

A Control Script can make the page numbering continue over all Print sections or let it restart on a section. This is done by setting the restartPageNumber field on a section to true or false.
For example: merge.template.contexts.PRINT.sections['Section 2'].restartPageNumber = true;. (Also see section and Control Script API.)

Page numbering starts with page 1 for each section. If for a section restartPageNumber is set to false, that section will start with the page number following the last page of the previous section.

Note that even if a section is not enabled (so it will not be outputted), its restartPageNumber flag is still taken into account for composing the page number sequences.

By default, each section has restartPageNumber = false when the first control script runs.

If you are looking to create a table of contents, add a template script that uses the pageRef() function. For an example, see pageRef().

Examples

Restarting the page numbers several times

Assume that a template has four sections (of 1 page each) in the Print context and a Control Script sets the page numbering as follows:

  1. Section A (1 page) restartPageNumber = true
  2. Section B (1 page) restartPageNumber = true
  3. Section C (1 page) restartPageNumber = false
  4. Section D (1 page) restartPageNumber = true

The code would look like this:

if (merge.context.type == ContextType.PRINT) { 
merge.context.sections['Section A'].restartPageNumber = true;
merge.context.sections['Section B'].restartPageNumber = true;
merge.context.sections['Section C'].restartPageNumber = false;
merge.context.sections['Section D'].restartPageNumber = true;
}

The page numbering in the output will be:

  1. Section A page 1
  2. Section B page 1
  3. Section C page 2
  4. Section D page 1

Disabled section

When a section is disabled, it will not be outputted, but its restartPageNumber flag will still be taken into account for composing the page number sequences. So, if the restartPageNumber flags are set as follows:

  1. Section A (1 page) restartPageNumber = true
  2. Section B (2 pages) restartPageNumber = false
  3. Section C (3 pages) restartPageNumber = true, enabled = false
  4. Section D (4 pages) restartPageNumber = false

In code:

if (merge.context.type == ContextType.PRINT) { 
merge.context.sections['Section A'].restartPageNumber = true;
merge.context.sections['Section B'].restartPageNumber = false;
merge.context.sections['Section C'].restartPageNumber = true;
merge.context.sections['Section C'].enabled = false;
merge.context.sections['Section D'].restartPageNumber = false;
}

The page numbering in the output will be:

  1. Section A page 1
  2. Section B page 2
  3. Section D page 1 (page numbering is restarted due to section C's restartPageNumber = true)

 

 
  • Last Topic Update: 23, January, 2017 09:11 AM
  • Last Published: 23, May, 2019 01:55 PM