Copy link to clipboard
Copied
Is there a way to save individual pages/spreads as a separate file without having to create a new document and copy and paste everything over? It would make my life so much easier...
Hi @Addison5E82:
That does make sense—thanks for clarifying your workflow.
You may want to post a link here to your feature request, so that users who have the same question later will see your link and can hop over and vote it up.
~Barb
I have a script that I got from someone
Window>Utilities>Scripts
Opens the script panel -
you can then right click any of them and locate it in your Finder/Windows
Edit any of them in a text editor
Paste the below code
Save it as Extractpages.jsx or something similar
Place it in the User folder of the Scripts panel.
@loicaigon I presume you don't mind me sharing this one?
//**************************************************************************************************************
//****
...
Copy link to clipboard
Copied
Have you considered using Save as to create a new file, and then deleting the spreads you don't need?
~Barb
Edit: thinking more about this question, if the spreads you need in the new file are coming from different InDesign files, you can also move spreads from one doc to another.
Copy link to clipboard
Copied
Hi Barb,
Thank you for your quick response. I spoke with support earlier and it doesn't seem there is a current feature in place to perform the action that I am wanting. I went ahead and submitted a feature request form earlier this morning.
To better explain what I was looking for (sorry in advance for the length, ha): I work at an Engineering Firm in Project Bid Proposals. We put together 100+ page documents that include resumes, project pages, etc. Once we have completed the proposal, as part of my job, I am supposed to go back through and save each person's resume in that person's folder and each project page in that project's folder so that it's easy to find. We like to save them as an InDesign file rather than a PDF so that we can easily edit it the next time we need to use it. It would be so much faster/more efficient if I could select the pages that I want to save directly into a certain folder, hit something like "save selected pages as" and it automatically extracts those pages as a separate InDesign file and save them into the respective folder. It takes a lot of time to create a new document and copy/paste everything over for every single resume, etc. Please consider! 🙂 I feel like I am speaking for everyone in the proposal industry, lol.
Hopefully that made sense.
Copy link to clipboard
Copied
I have a script that I got from someone
Window>Utilities>Scripts
Opens the script panel -
you can then right click any of them and locate it in your Finder/Windows
Edit any of them in a text editor
Paste the below code
Save it as Extractpages.jsx or something similar
Place it in the User folder of the Scripts panel.
@loicaigon I presume you don't mind me sharing this one?
//**************************************************************************************************************
//**************************************************************************************************************
//****
//**** Page extractor 1.0 - A script from Loïc Aigon with the great help of Peter Kahrel and other guys
//**** that cooperated on this stuff in tha adobe scripting forum. Feel free to improve.
//**** a little mail at loic _ aigon@yahoo.fr if you appreciate that script would be nice.
//****
//**************************************************************************************************************
//**************************************************************************************************************
//======================================
// <L10N> :: FRENCH_LOCALE :: RUSSIAN_LOCALE
//======================================
// Please save you file first before processing the script :: Enregistrez votre document avant de lancer le script :: Пожалуйста сохраните документ перед запуском скрипта
// Extract pages... :: Extraire des pages... :: Извлечь страницы...
// to :: a :: по
// Extract as separate pages :: Extraire chaque page comme un fichier :: Извлечь как отдельные страницы
// Remove pages after extraction :: Supprimer les pages après extraction :: Удалить страницы после извлечения
// Choose other extraction folder :: Choisir un autre dossier d'extraction :: Выбрать папку для сохранения
// </L10N> ::
// 2. Add the code's block below in your script:
if ( typeof __ == 'undefined' )
{
__sep = ' :: ';
__beg = ' <L10N>';
__end = ' </L10N>';
/*arr*/File.prototype.getCommentsContaining = function(/*str*/k_)
//--------------------------------------
{
var r = [];
if ( this.open('r') )
{
var line;
while(!this.eof)
{
line = this.readln();
if ( ( line.substr(0,2) == '//' )
&& ( line.indexOf(k_) >= 0 ) )
r.push(line.substr(2));
}
this.close();
}
return(r);
}
/*arr*/Array.prototype.parseL10N = function(/*str*/locale_)
//--------------------------------------
{
var r = [];
var sz = this.length;
var lm, ss;
var st = -1
var rg = 0;
for ( var i=0 ; i < sz ; i++ )
{
ss = this[i].split(__sep, lm);
if ( ( st == -1 ) && ( ss[0] == __beg ) )
{
lm = ss.length;
for ( var j = 1 ; j < lm ; j++ )
if ( ss[j] == locale_ ) rg=j;
st = 0;
continue;
}
if ( st == 0 )
{
if ( ( rg == 0 ) || ( ss[0] == __end ) ) break;
if ( ss.length <= rg ) continue;
r[ss[0].substr(1)] = ss[rg];
}
}
return(r);
}
/*str*/Number.prototype.toLocaleName = function()
//--------------------------------------
{
for ( var p in Locale )
if ( Locale[p] == this ) return(p);
return(null);
}
String.L10N = File(app.activeScript).
getCommentsContaining(__sep).
parseL10N(app.locale.toLocaleName());
function __(s){return(String.L10N[s]||s);}
}
// 1. Control for documents open. If true, the script launches the dialog
if(app.documents.length >0)
{
var doc = app.activeDocument;
if(doc.saved==true)
{
extractdlg();
}
else
{
alert(__("Please save you file first before processing the script"));
}
}
else
{
alert("No documents open !");
}
// 2. Gathers many infos on the document.
function pageinfos()
{
var pg = doc.pages;
var pglg = pg.length;
var pFirst = Number(pg[0].name);
var pLast = Number(pg[pglg-1].name);
var pgHeigth = doc.documentPreferences.pageHeight;
var pgWitdh = doc.documentPreferences.pageWidth;
var docname = String(doc.fullName).replace (/\.indd$/, "");
var docpath = doc.filePath;
var docfullname = doc.fullName;
var infoarr = [pglg, pFirst, pLast, pgHeigth,pgWitdh,docname,docpath,docfullname];
return infoarr;
}
// 3. Main function. First part is the dialog
function extractdlg()
{
var docfile = String(pageinfos()[7]);
var dlg = app.dialogs.add({name : "Pages Extractor 1.0 - ©www.loicaigon.com"});
with(dlg)
{
var firstclmn = dialogColumns.add();
with(firstclmn)
{
var firstrow = dialogRows.add();
with(firstrow)
{
var clmn1 = dialogColumns.add();
with(clmn1)
{
var row1 = dialogRows.add();
row1.staticTexts.add({staticLabel : __("Extract pages...")});
var row2 = dialogRows.add();
with(row2)
{
var r2c2 = dialogColumns.add();
with(r2c2)
{
var r2c2r1 = dialogRows.add();
var pgStart = r2c2r1.realEditboxes.add({editValue:pageinfos()[1], minWidth: 30});
}
var r2c3 = dialogColumns.add();
with(r2c3)
{
var r2c3r1 = dialogRows.add();
r2c3r1.staticTexts.add({staticLabel : __("to")});
}
var r2c4 = dialogColumns.add();
with(r2c4)
{
var r2c4r1 = r2c4.dialogRows.add();
var pgEnd = r2c4r1.realEditboxes.add({editValue:pageinfos()[2], minWidth: 30});
}
}
}
}
var secondrow = dialogRows.add();
with(secondrow)
{
var clmn2 = dialogColumns.add();
with(clmn2)
{
var row2 = dialogRows.add();
with(row2)
{
var sepbox = checkboxControls.add({staticLabel:__("Extract as separate pages"), checkedState:false});
}
}
}
var thirdrow = dialogRows.add();
with(thirdrow)
{
var clmn3 = dialogColumns.add();
with(clmn3)
{
var row3 = dialogRows.add();
with(row3)
{
var rembox = checkboxControls.add({staticLabel:__("Remove pages after extraction"), checkedState:false});
}
}
}
var foutrhrow = dialogRows.add();
with(foutrhrow)
{
var clmn4 = dialogColumns.add();
with(clmn4)
{
var row4 = dialogRows.add();
with(row4)
{
var savebox = checkboxControls.add({staticLabel:__("Choose other extraction folder"), checkedState:false});
}
}
}
}
}
// If the user made good choices, the script operates.
if(dlg.show()==true)
{
if(pgStart.editValue >= pageinfos()[2] || pgEnd.editValue <= pageinfos()[1])
{
alert("The pages numbers may be at least "+pageinfos()[1] +" for the first page of the range and "+ pageinfos()[2] + " at maximum for the last page");
}
else
{
// If the user choose to pick a different folder, he will be asked for. Otherwise, the dafault folder is the one containing the file.
if(savebox.checkedState==true)
{
var extractfolder = Folder.selectDialog ("Please choose a folder where to save extracted pages...");
if(!extractfolder)
{
exit();
}
else
{
var saveextractfolder = String(extractfolder.fullName)+"/" +String(doc.name).replace (/\.indd/, "");
}
}
else
{
var saveextractfolder = String(pageinfos()[5]);
}
var rem0 = pageinfos()[0]-1;
var rem2 = (pgStart.editValue-2);
// Variables definition regarding to the choice of the user to separate or not the extracted pages.
if(sepbox.checkedState==true)
{
var W = pgEnd.editValue-pgStart.editValue+1;
var rem1 = pgStart.editValue;
}
else
{
var W = 1;
var rem1 = pgEnd.editValue;
}
// Extraction loop
for(w=0; w<W;w++)
{
if(sepbox.checkedState==true)
{
var exportdocname = "_Pg" +(pgStart.editValue+w) +".indd";
}
else
{
var exportdocname = "_Pg"+pgStart.editValue+"_to_Pg_"+pgEnd.editValue +".indd";
}
for(var i=rem0; i>=rem1+w;i--)
{
doc.pages[i].remove();
}
for(var i=rem2+w; i>=0;i--)
{
doc.pages[i].remove();
}
var exportdoc = doc.save(File(saveextractfolder + exportdocname));
exportdoc.close(SaveOptions.no);
if(sepbox.checkedState==true && w<(pgEnd.editValue-pgStart.editValue))
{
app.open(File(docfile));
}
}
// If the user chose to remove the extracted pages from the original document, it will re open the first document then remove the unuseful pages.
if(rembox.checkedState == true)
{
app.open(File(docfile));
for(var i=pgEnd.editValue-1; i>=pgStart.editValue-1;i--)
{
doc.pages[i].remove();
}
app.activeDocument.close(SaveOptions.yes);
}
}
}
}
Copy link to clipboard
Copied
Hi @Addison5E82:
That does make sense—thanks for clarifying your workflow.
You may want to post a link here to your feature request, so that users who have the same question later will see your link and can hop over and vote it up.
~Barb