Skip to main content
Known Participant
January 25, 2021
Answered

duplicating one page X times

  • January 25, 2021
  • 2 replies
  • 1031 views

Hello everyone!

I need a help. I need to duplicate a page X times. Does it means that I want to be able to choose how many times I want to duplicate the page.

I found an interesting script that does it but it duplicate ALL the page of the document while I need to duplicate ONLY the active page. 

I have tried to modify the script but I couldn't.

Can anyone help me?

this is the script I found

 

var n = prompt('Enter a number between 1 and 99.', '', 'Name of dialog');
var reg = /^\d{2}$/;
if (reg.test(n)){
var doc = app.documents[0];
var nbPage = doc.pages.length; // count doc pages

for (i = 0; i < nbPage; i++) {
var sourcePage = doc.pages.item(i + (i*n));
for (j = 0; j < n; j++) {
sourcePage.duplicate(LocationOptions.AFTER, doc.pages.item(i + (i*n)));
}
}
}else{
alert('Error \r Must be a number between 1 to 99');
}

 

This topic has been closed for replies.
Correct answer rob day

Hi @GPGW , You might be better off using the built in InDesign integer dialog field rather than a text prompt, which ensures an integer is entered and returned. Also, you would have to make sure that page shuffling is allowed in order to prevent the new pages being added to a spread—the max number of pages for a spread is 10, which might be triggering the error.

 

Try this:

var n;
var theDialog = app.dialogs.add({name:"Enter a Number", canCancel:true});
with(theDialog.dialogColumns.add()){
    n = integerEditboxes.add({editValue:1, maximumValue:99, minimumValue:1, minWidth:100});
}
if(theDialog.show() == true){
    n = n.editValue
    theDialog.destroy();
    var doc = app.documents[0];
    //allow page shuffling
    doc.spreads.everyItem().allowPageShuffle = true;
    doc.documentPreferences.properties = {allowPageShuffle:true};
    var activePage = app.layoutWindows[0].activePage
    for (i = 0; i < n; i++) {
        activePage.duplicate(LocationOptions.AFTER, activePage);
    }
}

2 replies

Mike Witherell
Community Expert
Community Expert
October 15, 2024

I can't help but ask: why not build a Parent Page?

Mike Witherell
Charu Rajput
Community Expert
Community Expert
January 25, 2021

Hi,

Try following snippet for duplicating the activePage. Below script, active page will duplicate n times after active page.

var n = prompt('Enter how many times you want to duplicate', '', 'Name of dialog');
var reg = /^\d$/;
if (reg.test(n)) {
    var doc = app.documents[0];
    var activePage = app.layoutWindows[0].activePage

    for (i = 0; i < n; i++) {
        activePage.duplicate(LocationOptions.AFTER, activePage);
    }
} else {
    alert('Error \r Must be a number between 1 to 99');
}
Best regards
Known Participant
January 25, 2021

it works

thanks