• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Master Page Nightmare!

Community Expert ,
Nov 09, 2016 Nov 09, 2016

Copy link to clipboard

Copied

I'm working on a document at the moment and it has about 100 master pages.

The person who worked on this before setup the page headers wrong in each of the master pages, different headers for verso and different for recto, probably changed header with a text change when required, however, leaving a master spread with 2 different headings, if a page moves from recto to verso or vice versa, the wrong header is applied.

Well.. that's the story behind it.

What I wanted to do was to colour code all the master pages - however, there's only a limited amount of colours available. I basically wanted to see visually where a master page was used in the pages panel by assigning a colour.

Does anybody know of a way to have more colours available to apply - or even a script that can tell me what master pages are applied to what pages?

Views

578

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 09, 2016 Nov 09, 2016

Copy link to clipboard

Copied

Hi Eugene,

depending on the version of InDesign you are using a script could use arbitrary custom RGB colors to colour code a page.


** WARNING **

Before InDesign CC 2014.2 such a script will force the document to an instable state, if the color labeled page can be seen in the Pages panel:
InDesign will crash! ​That's a bug that was fixed with InDesign CC 2014.2.

So handle with care:

// Example in ExtendScript:

// color label all pages of all master spreads with an valid RGB value.

// Check the version number. If less than 10.2 (InDesign CC 2014.2) do nothing!
// If the lines below are executed with CC 2014.1 and below InDesign will crash after opening the Pages panel.

if(parseFloat(app.version)<10.2){exit()};

var pageColorLabelColor = [255,255,0]; // RGB values in the form: [r,g,b]

app.documents[0].masterSpreads.everyItem().pages.everyItem().pageColor = pageColorLabelColor;

And if you are working with InDesign CC 2014.2 and above, keep in mind not to save back the document you ran that script at!

Regards,
Uwe

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 09, 2016 Nov 09, 2016

Copy link to clipboard

Copied

Thanks - that's great! I have version 11.4.1.102 running at the moment.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 09, 2016 Nov 09, 2016

Copy link to clipboard

Copied

If you want to switch all page color labels back to none, use:

app.documents[0].masterSpreads.everyItem().pages.everyItem().pageColor = PageColorOptions.NOTHING;

Regards,
Uwe

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 11, 2016 Nov 11, 2016

Copy link to clipboard

Copied

Thanks for that! However, the colour code colours every page yellow, not different colours.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 12, 2016 Nov 12, 2016

Copy link to clipboard

Copied

Sorry Eugene,

obviousl I missed your intention.
My fault.

One observation when working with scripted custom color labels for:

1. Document pages

2. Master pages

3. Master spreads

by using (pseudo code following):

1. Custom RGB colors

page.colorLabel = [ red value from 0-255 , green value from 0-255 , blue value from 0-255 ];

2. Using UIColors

With CC 2017 there are 37 UI Colors defined, only 15 of 37 are available in the UI for labeling pages.

2.1 page.colorLabel = UIColors.NAME;

2.2 page.colorLabel = Enumeration number of a UIColor;

Note: If the assigned UIColor corresponds with one of the 15 available UI Colors for page labels, the applied color will show up in the context menu where the page label can be applied as ticked. But one cannot read out the color's name or color's values in the UI if it is not part of the 15 ones. For that we would need an extra script with an interface perhaps showing the color, its value or its name.

Having hundreth of different color labels could be confusing because the visible distance from color to color should be big enough to discern a color from the next one as presented in the Pages panel. This can be problematic or impossible for a huge range of masters.

Alternatives:

What can be done by scripting with not too much effort is to read out the names of the masters that are applied to the pages of a document and write the names to a table of an added document. From there you could copy the result in tabular form to an Excel sheet and do sorting by master names, by page names or absolute page numbering. A text file of the result in tabular form is also possible.

// ReadoutOfNamesOfAppliedMastersTo-DocumentPages-SHOW-RESULT-TABLE.jsx

// Uwe Laubender

/**

* @@@BUILDINFO@@@ ReadoutOfNamesOfAppliedMastersTo-DocumentPages-SHOW-RESULT-TABLE.jsx !Version! Sat Nov 12 2016 13:25:05 GMT+0100

*/

/*

    1. Reads out the name of applied masters of every page in the active document.

   

    2. The results will be stored and added to a table in a new document.

    The table consists of 3 columns.

   

    3. The script will add pages if necessary to show the whole table.

   

    Note:

    The tabular results can be easily copied over to an Excel file

    where you can do some sorting.

   

    After: Absolute page numbers in the document (default)

    After: Names of applied masters in alphabetical order

    After: Page names

*/

// If something goes wrong—the story of the resulting table will be in permanent overflow—

// the loop for adding pages to the result document will stop after the value of variable

// maximumAddedPagesToResultDoc:

var maximumAddedPagesToResultDoc = 100; // Should be greater than 1

// The active document we gather the information from:

var doc = app.documents[0];

// Array of all document pages:

var pages = doc.pages.everyItem().getElements();

var pagesLength = pages.length;

// Preparing an array to gather information:

// Two top rows of the result table will be prepopulated with:

// Row 1: The documnet's name

// Row 2: "Absolute Page Number" , "Page Name" , "Applied Master Name"

var resultArray = [doc.name, "", "", "Absolute Page Number" , "Page Name" , "Applied Master Name"];

// A loop through the pages array:

for(var n=0;n<pagesLength;n++)

{

    resultArray[resultArray.length++] = (n+1).toString();

    resultArray[resultArray.length++] = pages.name;

   

    if(pages.appliedMaster == null){resultArray[resultArray.length++] = "[None]"; continue};

    resultArray[resultArray.length++] = pages.appliedMaster.name;

};

// A none-facing pages document 297 x 210 mm will be added to show the results.
// Values of document creation can be changed:
// From e.g. "297mm" to "210mm", if you want square sized pages.

// Or use Points like that: "500pt"…

// Also  page orienation can be changed. Simply use:

// PageOrientation.PORTRAIT

var resultDoc = app.documents.add

(

    true,

    undefined,

    {

        documentPreferences :

        {

            facingPages : false ,

            pageOrientation : PageOrientation.LANDSCAPE ,

            pageWidth : "297mm" ,

            pageHeight : "210mm" ,

            createPrimaryTextFrame : false

        }

    }

);

// Creates a new text frame on page 1:

var resultTextFrame = resultDoc.pages[0].textFrames.add

(

    {

        geometricBounds : resultDoc.pages[0].bounds ,

        fillColor : "None" ,

        strokeColor : "None" ,

        strokeWeight : 0

    }

);

// Add a table with three columns to the new text frame:

resultTextFrame.parentStory.texts[0].insertionPoints[0].tables.add

(

    {

        columnCount : 3 ,

        bodyRowCount : resultArray.length / 3 ,

        contents : resultArray ,

        width : resultTextFrame.geometricBounds[3] - resultTextFrame.geometricBounds[1]

    }

);

// If the contents does not fit on page 1, add new pages to the result document until it fits:

// Add a text frame to a new page, theread the text frame to the story of the result table.

// Adding pages will stop, if:

// The story of the table will not overflow anymore.

// AND / OR : The maximum value of pages to add is reached.

// Whatever happens first. See value of variable

//

// maximumAddedPagesToResultDoc

//

// in line 30 of this script.

while (resultTextFrame.parentStory.overflows && maximumAddedPagesToResultDoc != 1)

{

    var newPage = resultDoc.pages.add();

    var newTextFrame = newPage.textFrames.add

    (

        {

            geometricBounds : resultDoc.pages[0].bounds ,

            fillColor : "None" ,

            strokeColor : "None" ,

            strokeWeight : 0

        }

    );

    resultTextFrame.endTextFrame.nextTextFrame = newTextFrame;

   

    --maximumAddedPagesToResultDoc;

}

Regards,
Uwe

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 12, 2016 Nov 12, 2016

Copy link to clipboard

Copied

That sounds great. I will give it a go. I'm on a business trip starting Monday but I'll be back Friday to try it.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 12, 2016 Nov 12, 2016

Copy link to clipboard

Copied

I think the setup with 100 Masters is not the best method, instead of using 100 Masters do that:

  1. Use Masters based on other Masters if the most parts are common.
  2. For pages with different running headers use only one single master, use text variables or section markers in a text frame on the Master.
  3. Use facing pages.
  4. Use Paragraph and Object Styles for alignment relative to the spine.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 15, 2016 Nov 15, 2016

Copy link to clipboard

Copied

Yeh if I was the original creator I would have done it a lot differently! I inherited the file!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 15, 2016 Nov 15, 2016

Copy link to clipboard

Copied

LATEST

Did someone kill the guy because he has done it, so you could inherit it?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines