Skip to main content
Participant
May 20, 2015
Answered

convert pages to layers

  • May 20, 2015
  • 1 reply
  • 605 views

Hi All

I have an indesign document which has multiple pages (this one for example has over 200) with base layers of "footer", "content" & "background" and I would like to change it so that each page is on 1 layer so example all elements on page 1 convert to layer 1 and so on is this possible and does anyone have a script that could do this?

Thanks

cp_vdp_user_2015

This topic has been closed for replies.
Correct answer Sajeev Sridharan

I have given two solutions (your question was not clear), try the below code:

1) All elements in the document will be changed to "Layer 1"

for (var idx = myDoc.allPageItems.length-1; idx >=0 ; idx--)

{

    var pageItem = myDoc.allPageItems[idx];

    pageItem.itemLayer = "Layer 1";

}

2) All the elements in a each an every page will be mapped to different to layer accordingly (I think you need this):

for(var p=0; p<myDoc.pages.length; p++)

{

    var myPageItems = myDoc.pages

.pageItems.everyItem().getElements();

    var myLayerPage = (p+1);

    for(var i=0;i<myPageItems.length;i++)

    {

        try{var myLayer = app.activeDocument.layers.add ({name: "Page " + myLayerPage});}catch(e){}       

        myPageItems.itemLayer = "Page " + myLayerPage;

    }

}

1 reply

Sajeev SridharanCorrect answer
Legend
May 20, 2015

I have given two solutions (your question was not clear), try the below code:

1) All elements in the document will be changed to "Layer 1"

for (var idx = myDoc.allPageItems.length-1; idx >=0 ; idx--)

{

    var pageItem = myDoc.allPageItems[idx];

    pageItem.itemLayer = "Layer 1";

}

2) All the elements in a each an every page will be mapped to different to layer accordingly (I think you need this):

for(var p=0; p<myDoc.pages.length; p++)

{

    var myPageItems = myDoc.pages

.pageItems.everyItem().getElements();

    var myLayerPage = (p+1);

    for(var i=0;i<myPageItems.length;i++)

    {

        try{var myLayer = app.activeDocument.layers.add ({name: "Page " + myLayerPage});}catch(e){}       

        myPageItems.itemLayer = "Page " + myLayerPage;

    }

}

Participant
May 20, 2015

Hi Sajeev

This answer does what I want (the second option) the only drawback is for some reason it doesn't choose all objects on the spreads and also it would fail if there were any locked items on the spread as well.

Regards

cp_vdp_user_2015

Legend
May 20, 2015

Try this,

app.activeDocument.pages.everyItem().pageItems.everyItem().locked = false