Back

If your email is not recognized and you believe it should be, please contact us.

Forum Replies Created

Viewing 14 posts - 61 through 75 (of 343 total)
  • Author
    Posts
  • in reply to: TOC and multiple identical entries #86257
    Ari Singer
    Member

    Kai, your GREP string only seems to work in sets of two and not when there are multiple instances.

    Valentin, here’s the updated script that should work as expected. But be aware that it will not work when there’s a regular space between the entry and the number, only a tab is allowed. So make sure that all the entries have proper tabs before the number.

    Please let me know if this does work.

    app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, "Fix Duplicate TOC Entries");
    
    function main() {
        var myDoc = app.activeDocument;
        cleanPrefs();
        app.findGrepPreferences.findWhat = "(.+?)sd+r(1sd+r)+";
        var foundText = myDoc.findGrep();
        for (var i = foundText.length - 1; i >= 0; i--) {
           var curEntry = foundText[i];
            app.findGrepPreferences.findWhat = "r(?=.)";
            app.changeGrepPreferences.changeTo = ",s";
            curEntry.changeGrep();
            app.findGrepPreferences.findWhat = "(?<=, )(.+?)t(?=d+)";
            app.changeGrepPreferences.changeTo = "";
            curEntry.changeGrep();
            }      
        cleanPrefs();
        }
    
    function cleanPrefs() {
        app.findGrepPreferences = app.changeGrepPreferences = null;
        }
    
    in reply to: FindChangeByList Not Applying Clipboard Contents #86256
    Ari Singer
    Member

    Thanks, pnamajck! This post was a while ago, when I was still at the mercy of the FindChangeByList script. But fortunately, since then, I taught myself scripting so I don’t need the clumsy FindChangeByList anymore.

    Ari Singer
    Member

    NOTES:
    When you run the script you’re prompted with a dialog to enter the amount of pages that you want packaged at a time. Of course, the script does not accept any amount that is less than one, or more than the amount of pages in the document

    If you want to package each and every page individually (as Julie originally requested) just enter an amount of “1”.

    NOTE: The script has one drawback: Any empty pages don’t get packaged. This might be a deal-breaker for some. I hope to find a solution to this problem sometime soon.

    Ari Singer
    Member

    The script has one drawback, though: empty pages do not get packaged. To some this might be a deal-breaker, but I hope to find a solution sometime soon.

    –Ari

    P.S. Thanks, Julie…

    Ari Singer
    Member
    //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];
                if (srcPage.pageItems.length == 0)
                    continue;
                var newPage = newDoc.pages.add();
                srcPage.duplicate(undefined, newPage);
                srcMaster = srcPage.appliedMaster;
                var newMaster;
                try {
                    newMaster = newDoc.masterSpreads.item(srcMaster.name);
                    newMaster.name;
                    }
                catch (myError) {
                    newMaster = srcMaster.duplicate(undefined, newDoc);
                    }
                newPage.appliedMaster = newMaster;
                }
            for (var k = newDoc.pages.length -1; k >=0; k--) {
                if (newDoc.pages[k].pageItems.length == 0){
                    try {
                        newDoc.pages[k].remove();
                        } catch (myError){};
                    }
                }
            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();
                }
            }
        }
    
    in reply to: A script/plugin to write position and size of object #86210
    Ari Singer
    Member

    Who says that it actually freezes? Maybe you just have to let it finish. How long did you wait?

    in reply to: A script/plugin to write position and size of object #86207
    Ari Singer
    Member

    That’s interesting, because the script is supposed to delete that layer every time it runs. Did you try to manually delete the entire layer?

    in reply to: A script/plugin to write position and size of object #86205
    Ari Singer
    Member

    My pleasure! I did not do it for money, but donations are always accepted :) Please send me an email to designerjoe[at]outlook.com

    in reply to: A script/plugin to write position and size of object #86203
    Ari Singer
    Member
    in reply to: A script/plugin to write position and size of object #86202
    Ari Singer
    Member

    And it’s JavaScript.

    in reply to: A script/plugin to write position and size of object #86201
    Ari Singer
    Member

    Please upload a screenshot of the error. Did you copy the code from here or from your email? Because copying from the email can be problematic.

    in reply to: TOC and multiple identical entries #86196
    Ari Singer
    Member

    To be able to do it correctly I need to have an actual file to test on. Please copy the TOC to a new document and upload it here.

    Ari Singer
    Member

    It can be done, but is it bit more complicated, I think. I’ll try to write something if I have a chance.

    in reply to: A script/plugin to write position and size of object #86192
    Ari Singer
    Member

    Here you go:

    app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, "Get XY Coords");
    function main() {
        var myDoc = app.activeDocument;
        var myPages = myDoc.pages;
        var myLayers = myDoc.layers;
        for (var k = 0; k < myLayers.length; k++) {
            if (myLayers[k].name == "Info Layer")
            myLayers[k].remove();
            break;
            }
        var myObjectStyle;
        var myParaStyle;
        myDoc.layers.add({name: "Info Layer"});
        try {
            myParaStyle = myDoc.paragraphStyles.item("InfoStyle");
            myParaStyle.name;       
            }
        catch (myError){
            myParaStyle = myDoc.paragraphStyles.add({name:"InfoStyle", pointSize:10, leading:14, noBreak: true});
            }
        try{
            myObjectStyle = myDoc.objectStyles.item("InfoFrame");
            myObjectStyle.name;
            }
        catch (myError){
            myObjectStyle = myDoc.objectStyles.add();
            with(myObjectStyle) {
                name = "InfoFrame";
                basedOn = "[None]";
                enableFrameFittingOptions = true;
                enableAnchoredObjectOptions = false;
                enableFill = false;
                enableParagraphStyle = true;
                enableStroke = false;
                enableStrokeAndCornerOptions = false;
                enableTextFrameAutoSizingOptions = true;
                enableTextFrameGeneralOptions = true;
                enableTextWrapAndOthers = false;
                myObjectStyle.textFramePreferences.autoSizingType = AutoSizingTypeEnum.HEIGHT_AND_WIDTH;
                myObjectStyle.textFramePreferences.autoSizingReferencePoint = AutoSizingReferenceEnum.BOTTOM_LEFT_POINT;
                myObjectStyle.appliedParagraphStyle = myParaStyle;
                }
            }
        for (i = 0; i <myPages.length; i++) {
            var allStuff = myPages[i].allPageItems;
            for (j = 0; j < allStuff.length; j++) {
                var curStuff = allStuff[j];
                var myBounds = curStuff.geometricBounds;
                var myY = myBounds[0];
                var myX = myBounds[1];
                var myH = myBounds[2] - myY;
                var myW = myBounds[3] - myX;
                var myString = "Y: " + myY.toFixed(1) + " X: " + myX.toFixed(1) + " H: " + myH.toFixed(1) + " W: " + myW.toFixed(1);
                var myFrame = myPages[i].textFrames.add();
                myFrame.geometricBounds = [(myY - 5), myX, (myY - 2), (myX + 1)];
                myFrame.appliedObjectStyle = myObjectStyle;
                myFrame.contents = myString;
                //alert(myString);
                }
            }
        }
    

    This creates a new layer called “Info Layer”, and places all the info text on that layer. Don’t place anything yourself on this layer, because whenever you run the script again this layer will automatically be destroyed to make sure all the info is up to date.

    You can play around with the paragraph style (“InfoStyle”), and the object style (“InfoFrame”) that the script automatically creates, and the good news is that your settings won’t be lost when you run the script again.

    This script assumes that you have a later version of InDesign that supports auto-sizing text frames.

    Good luck!

    Ari

Viewing 14 posts - 61 through 75 (of 343 total)