Reply To: package for output – single pages, from a multi page document

Home Page / Forums / General InDesign Topics (CLOSED) / package for output – single pages, from a multi page document / Reply To: package for output – single pages, from a multi page document

#86258
Ari Singer
Member

Sorry for making you crazy with these extra-long scripts, but I finally fixed it, and I recommend you use the new code.
Now the script honors blank pages and packages it along (so books and the like don’t get messed up).

//created by Ari S. --  designerjoe@outlook.com
// Package entire document individually by the amount of pages at a time that you want

app.scriptPreferences.enableRedraw = false;
var srcDoc = app.activeDocument;
var srcTitle = srcDoc.name;
var srcPages = srcDoc.pages;
var pgLength = srcPages.length;
var srcW = srcDoc.documentPreferences.pageWidth;
var srcH = srcDoc.documentPreferences.pageHeight;
var srcPgLength = srcPages.length;
var start = 0;
var range, end, newDocName, isEnd, fileName;

// ------- HERE YOU CAN CHANGE ANY PACKAGING SETTING THAT YOU WANT. TRUE means 'ON', and FALSE means 'OFF': ---------

var copyingFonts = true;
var copyingLinkedGraphics = true;
var copyingProfiles = true;
var updatingGraphics = true;
var includingHiddenLayers = true;
var ignorePreflightErrors = true;
var creatingReport = true;
var includeIDML = true;
var includePDF = false;
var pdfStyle = "";
var forceSave = true;

var myDialog = app.dialogs.add({name:"Package Export Range", canCancel:true});
with (myDialog) {
    with(dialogColumns.add()) {
        with(dialogRows.add()) {
            staticTexts.add ({staticLabel:"Enter the amount of pages you want to package at a time"});
            with(dialogRows.add()) {
                var myRangeBox = integerEditboxes.add({editValue:1});
                }
            }
        }
    }

if (myDialog.show() == true) {
    range = myRangeBox.editValue;
    if (range == 0) {
        alert("0 is not a range!...");
        myDialog.destroy();
        exit();
        }
    else if (range > pgLength) {
        alert("Range can't be more than the amount of pages");
        myDialog.destroy();
        exit();
        }
    run();
    }
else {
    myDialog.destroy();
    exit();
    }
        
function run() {
    while (!isEnd) {
        var newDoc = app.documents.add({pageWidth: srcW, pageHeight: srcH});
        newDoc.masterSpreads[0].baseName = "garbage_master";
        end = start + range;
        if (end >= srcPages.length) {
            end = srcPages.length;
            isEnd = true;
            }
        var firstPage = srcPages[start];
        var lastPage = srcPages[end - 1];
        for (var j = start; j < end; j++) {
            var srcPage = srcPages[j];
            var newPage;
            if (j == start) {
                newPage = srcPage.duplicate(LocationOptions.BEFORE, newDoc.pages[0]);
                for (var k = newDoc.pages.length - 1; k > 0; k--) {
                    newDoc.pages[k].remove();
                    }
                }
            else {
                newPage = srcPage.duplicate(LocationOptions.AFTER, newDoc.pages[-1])
                }
            srcMaster = srcPage.appliedMaster;
            var newMaster;
            try {
                newMaster = newDoc.masterSpreads.item(srcMaster.name);
                newMaster.name;
                }
            catch (myError) {
                newMaster = srcMaster.duplicate(undefined, newDoc);
                }
            newPage.appliedMaster = newMaster;
            }
        newDoc.masterSpreads[0].remove();
        if (firstPage.side === PageSideOptions.LEFT_HAND) {
            newDoc.documentPreferences.startPageNumber = 2
            }
        if (newDoc.pages.length == 1) {
            fileName = "Page " + firstPage.name;
            }
        else {
            fileName = "Pages " + firstPage.name + " - " + lastPage.name;
            }
        createPackage(newDoc);
        start += range;
        if (start == srcPages.length) {
            isEnd = true;
            }
        }
    }
        


function createPackage(myNewDoc) {
    var targetFolder = new File("~/Desktop/" + srcTitle +"/" + fileName + "/");
    var flag = Folder(targetFolder).create();
    var versionComments = srcTitle + " " + fileName;
      if ( flag === true){
        var garbageFolder = new File("~/Desktop/" + srcTitle +"/Delete This Folder/");
        Folder(garbageFolder).create();
        myNewDoc.save(new File("~/Desktop/" + srcTitle + "/Delete This Folder/" + fileName + ".indd"))
        myNewDoc.packageForPrint (
        targetFolder, 
        copyingFonts, 
        copyingLinkedGraphics, 
        copyingProfiles, 
        updatingGraphics, 
        includingHiddenLayers,
        ignorePreflightErrors,
        creatingReport,
        includeIDML,
        includePDF,
        pdfStyle,
        versionComments,
        forceSave);
        myNewDoc.close(SaveOptions.no);
        var myTempFiles = Folder(garbageFolder).getFiles();
        for (l = myTempFiles.length - 1; l >= 0; l--) {
            myTempFiles[l].remove();
            Folder(garbageFolder).remove();
            }
        }
    }

This article was last modified on July 4, 2016

Comments (0)

Loading comments...