'flatten.txt' script for Acrobat 9 Flatten Document Menu Item

Hello,
I was following the steps in this blog (Add a Flatten Document Menu Item to Acrobat) to add a Flatten Document menu item in Acrobat 9, and the link the 'flatten.txt' script is dead.  The page directs you to this link:  https://acrobat.com/?d=KlVeiP4I1SXCRcTpRh-2wQ, which is just the Adobe Document Cloud webpage.  Does anybody have a copy of the 'flatten.txt' script?  I've used this before on my last computer, but since re-installing I have not been able to add this feature to Acrobat 9.  Any help is appreciated.  Thanks

You need to contact Rick Borstein to update the link for the missing file. See his blog entry In case files are missing. Adobe has closed Acrobat.com and started a new service for Acrobat DC.
There are any number of scripts to provide add this feature with some options.
PDFScripting free automation tools
Selective Flattener by UVSAR, you may need to research where the user scripts are stored in the newer versions of Acrobat.
In the future, you should either copy your custom scripts to a remote location for restoration or keep a copy of the scripts and documentation on removable data or a networked location as a backup.

Similar Messages

  • How do you set the default magnification for Acrobat.  All documents that I open enlarge to 174% and are too big.

    How do you set the default magnification for Acrobat.  All documents that I open enlarge to 174% and are too big.  I see how to change the size after the document is open by going to File/properties/initial view and saving this setting.  I want all documents to open at 100% when they are first opened.  Can I set this as a default view?

    Hey Kris,
    You might go to Edit> Preferences> Zoom
    Do this without opening any particular PDF so that it applies to the program itself and not just one document.
    Try this and then let me know.
    Regards,
    Anubha

  • Next and Previous Document menu items greyed out

    I have Reader 8.1 and the next document and previous document menu items under View > Go To are greyed out, even though I have several document open and they show up in the windows menu. Any thoughts? Thanks.

    Are you definitely opening the correct version of After Effects, or are you perhaps opening the After Effects Render Engine instead?
    The Render Engine is, as its name suggests, purely for rendering existing projects, and most other functions are greyed out.
    Bill Hirsh wrote:
    I downloaded the guru 5.0 or ;after Driver,
    I don't understand what this means.  Please repost and explain more precisely what the problem is.

  • Remove symbol # for long text in document line item

    Dear Experts,
    I enter some information in the long text field in document line item. For the area that I use "Tab" button, system will display as # symbol. Therefore when we print the information, the output will include the #### symbol which is not correct.
    Please help.
    Thanks.
    -Syaban-

    Dear Gaurav Aggarwal,
    Thanks for the reply, can you guide me the step to perform the suggested solutions? currently, we are using ECC6.
    Thanks.
    syaban

  • Script for Transfering paths between documents?.. help

    Dear all,
    I can see that this question has been asked a few times, but the answers don't work for me.
    All I need to do is to make a script (I am new to this).. which automates the transfer of the paths to the document with the same file name.
    E.g.: File 1: Original tif or .psd file with file name fridaystudios64 which resides in a folder called tif. File 2: Jpg image which has been sent away for clipping and has come back. It also has the same filename fridaystudio64 but resides in a folder called Paths..
    The file name is always different.. and there are over 10 for each batch.
    The file size of these documents is exactly the same, but the colour space is different.. (the tif or .psd is Adobe RGB and the jpg is sRGB).
    The file needs to automate by recognising the other file with the same name, opening up, and copying it over, and then just saving it.
    I could do this manually, but it takes about 3 minutes a day, and sometimes longer, and thought if it's possible then it would be cool.
    Can anyone please help with this, or already have a script they are generous enough to give me..
    Kind regards,

    Does this help?
    // select folder, if folder »paths« exists beside that folder transfer paths from jpgs to psds, tifs from first folder;
    // 2014, use it at your own risk;
    #target photoshop
    // dialog for folder-selection;
    var theFolder1 = Folder.selectDialog ("select folder 1");
    var theFolder2 = Folder(theFolder1.parent+"/Paths");
    //var theFolder2 = Folder.selectDialog ("select folder 2");
    if (theFolder1 && theFolder1) {
    var theFiles1 = theFolder1.getFiles(getSomeFiles);
    // work through folders;
    for (var m = 0; m < theFiles1.length; m++) {
              var theFile = theFiles1[m];
    // if corresponding jpg exists;
              var thePath = theFolder2+"/"+theFile.name.replace(/\.\D{3}$/i, ".jpg");
              if (File(thePath).exists == true) {
    // open jpg;
                        var theFile2 = app.open(File(thePath));
    // if jpg has path/s;
                        if (theFile2.pathItems.length > 0) {
                                  var thePaths = new Array;
                                  var theNames = new Array;
    // collect paths;
                                  for (var n = 0; n < theFile2.pathItems.length; n++) {
                                            var thisPath = theFile2.pathItems[n];
                                            theNames.push (thisPath.name);
                                            thePaths.push (collectPathInfoFromDesc2012(theFile2, thisPath));
                                  theFile2.close(SaveOptions.DONOTSAVECHANGES)
    // open other file;
                                  var theFile = app.open(theFile);
    // create paths;
                                  for (var o = 0; o < thePaths.length; o++) {
                                            var theName = theNames[o];
    // if path of that name exists;
                                            var theCheck = false
                                            while (theCheck == false) {
                                                      try {
                                                                theFile.pathItems.getByName(theName);
                                                                theName = theName + "_"
                                                      catch (e) {theCheck = true};
                                            createPath2012(thePaths[o], theName)
    // close and save;
                                  theFile.close(SaveOptions.SAVECHANGES);
                        else {theFile2.close(SaveOptions.DONOTSAVECHANGES)}
    ////// get psds and tifs from files //////
    function getSomeFiles (theFile) {
        if (theFile.name.match(/\.(tif|psd)$/i)) {
            return true
    ////// get document’s //////
    function getDocumentsID () {
    var ref = new ActionReference();
    ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );
    var docDesc = executeActionGet(ref);
    var docID = docDesc.getInteger(stringIDToTypeID("documentID"));
    var docIndex = docDesc.getInteger(stringIDToTypeID("itemIndex"));
    return [docID, docIndex]
    ////// collect path info from actiondescriptor, smooth added //////
    function collectPathInfoFromDesc2012 (myDocument, thePath) {
    var originalRulerUnits = app.preferences.rulerUnits;
    app.preferences.rulerUnits = Units.POINTS;
    // based of functions from xbytor’s stdlib;
    var ref = new ActionReference();
    for (var l = 0; l < myDocument.pathItems.length; l++) {
              var thisPath = myDocument.pathItems[l];
              if (thisPath == thePath && thisPath.name == "Work Path") {
                        ref.putProperty(cTID("Path"), cTID("WrPt"));
              if (thisPath == thePath && thisPath.name != "Work Path" && thisPath.kind != PathKind.VECTORMASK) {
                        ref.putIndex(cTID("Path"), l + 1);
              if (thisPath == thePath && thisPath.kind == PathKind.VECTORMASK) {
            var idPath = charIDToTypeID( "Path" );
            var idPath = charIDToTypeID( "Path" );
            var idvectorMask = stringIDToTypeID( "vectorMask" );
            ref.putEnumerated( idPath, idPath, idvectorMask );
    var desc = app.executeActionGet(ref);
    var pname = desc.getString(cTID('PthN'));
    // create new array;
    var theArray = new Array;
    var pathComponents = desc.getObjectValue(cTID("PthC")).getList(sTID('pathComponents'));
    // for subpathitems;
    for (var m = 0; m < pathComponents.count; m++) {
              var listKey = pathComponents.getObjectValue(m).getList(sTID("subpathListKey"));
              var operation1 = pathComponents.getObjectValue(m).getEnumerationValue(sTID("shapeOperation"));
              switch (operation1) {
                        case 1097098272:
                        var operation = 1097098272 //cTID('Add ');
                        break;
                        case 1398961266:
                        var operation = 1398961266 //cTID('Sbtr');
                        break;
                        case 1231975538:
                        var operation = 1231975538 //cTID('Intr');
                        break;
                        default:
    //                    case 1102:
                        var operation = sTID('xor') //ShapeOperation.SHAPEXOR;
                        break;
    // for subpathitem’s count;
              for (var n = 0; n < listKey.count; n++) {
                        theArray.push(new Array);
                        var points = listKey.getObjectValue(n).getList(sTID('points'));
                        try {var closed = listKey.getObjectValue(n).getBoolean(sTID("closedSubpath"))}
                        catch (e) {var closed = false};
    // for subpathitem’s segment’s number of points;
                        for (var o = 0; o < points.count; o++) {
                                  var anchorObj = points.getObjectValue(o).getObjectValue(sTID("anchor"));
                                  var anchor = [anchorObj.getUnitDoubleValue(sTID('horizontal')), anchorObj.getUnitDoubleValue(sTID('vertical'))];
                                  var thisPoint = [anchor];
                                  try {
                                            var left = points.getObjectValue(o).getObjectValue(cTID("Fwd "));
                                            var leftDirection = [left.getUnitDoubleValue(sTID('horizontal')), left.getUnitDoubleValue(sTID('vertical'))];
                                            thisPoint.push(leftDirection)
                                  catch (e) {
                                            thisPoint.push(anchor)
                                  try {
                                            var right = points.getObjectValue(o).getObjectValue(cTID("Bwd "));
                                            var rightDirection = [right.getUnitDoubleValue(sTID('horizontal')), right.getUnitDoubleValue(sTID('vertical'))];
                                            thisPoint.push(rightDirection)
                                  catch (e) {
                                            thisPoint.push(anchor)
                                  try {
                                            var smoothOr = points.getObjectValue(o).getBoolean(cTID("Smoo"));
                                            thisPoint.push(smoothOr)
                                  catch (e) {thisPoint.push(false)};
                                  theArray[theArray.length - 1].push(thisPoint);
                        theArray[theArray.length - 1].push(closed);
                        theArray[theArray.length - 1].push(operation);
    // by xbytor, thanks to him;
    function cTID (s) { return cTID[s] || cTID[s] = app.charIDToTypeID(s); };
    function sTID (s) { return sTID[s] || sTID[s] = app.stringIDToTypeID(s); };
    // reset;
    app.preferences.rulerUnits = originalRulerUnits;
    return theArray;
    ////// create a path from collectPathInfoFromDesc2012-array //////
    function createPath2012(theArray, thePathsName) {
    var originalRulerUnits = app.preferences.rulerUnits;
    app.preferences.rulerUnits = Units.POINTS;
    // thanks to xbytor;
    cTID = function(s) { return app.charIDToTypeID(s); };
    sTID = function(s) { return app.stringIDToTypeID(s); };
        var desc1 = new ActionDescriptor();
        var ref1 = new ActionReference();
        ref1.putProperty(cTID('Path'), cTID('WrPt'));
        desc1.putReference(sTID('null'), ref1);
        var list1 = new ActionList();
    for (var m = 0; m < theArray.length; m++) {
              var thisSubPath = theArray[m];
        var desc2 = new ActionDescriptor();
        desc2.putEnumerated(sTID('shapeOperation'), sTID('shapeOperation'), thisSubPath[thisSubPath.length - 1]);
        var list2 = new ActionList();
        var desc3 = new ActionDescriptor();
        desc3.putBoolean(cTID('Clsp'), thisSubPath[thisSubPath.length - 2]);
        var list3 = new ActionList();
    for (var n = 0; n < thisSubPath.length - 2; n++) {
              var thisPoint = thisSubPath[n];
        var desc4 = new ActionDescriptor();
        var desc5 = new ActionDescriptor();
        desc5.putUnitDouble(cTID('Hrzn'), cTID('#Rlt'), thisPoint[0][0]);
        desc5.putUnitDouble(cTID('Vrtc'), cTID('#Rlt'), thisPoint[0][1]);
        desc4.putObject(cTID('Anch'), cTID('Pnt '), desc5);
        var desc6 = new ActionDescriptor();
        desc6.putUnitDouble(cTID('Hrzn'), cTID('#Rlt'), thisPoint[1][0]);
        desc6.putUnitDouble(cTID('Vrtc'), cTID('#Rlt'), thisPoint[1][1]);
        desc4.putObject(cTID('Fwd '), cTID('Pnt '), desc6);
        var desc7 = new ActionDescriptor();
        desc7.putUnitDouble(cTID('Hrzn'), cTID('#Rlt'), thisPoint[2][0]);
        desc7.putUnitDouble(cTID('Vrtc'), cTID('#Rlt'), thisPoint[2][1]);
        desc4.putObject(cTID('Bwd '), cTID('Pnt '), desc7);
        desc4.putBoolean(cTID('Smoo'), thisPoint[3]);
        list3.putObject(cTID('Pthp'), desc4);
        desc3.putList(cTID('Pts '), list3);
        list2.putObject(cTID('Sbpl'), desc3);
        desc2.putList(cTID('SbpL'), list2);
        list1.putObject(cTID('PaCm'), desc2);
        desc1.putList(cTID('T   '), list1);
        executeAction(cTID('setd'), desc1, DialogModes.NO);
    if (hasVectorMask() == false) {
    var myPathItem = app.activeDocument.pathItems[app.activeDocument.pathItems.length - 1];
    else {
    var myPathItem = app.activeDocument.pathItems[app.activeDocument.pathItems.length - 2];
    myPathItem.name = thePathsName;
    app.preferences.rulerUnits = originalRulerUnits;
    return myPathItem
    // from »Flatten All Masks.jsx« by jeffrey tranberry;
    // Function: hasVectorMask
    // Usage: see if there is a vector layer mask
    // Input: <none> Must have an open document
    // Return: true if there is a vector mask
    function hasVectorMask() {
              var hasVectorMask = false;
              try {
                        var ref = new ActionReference();
                        var keyVectorMaskEnabled = app.stringIDToTypeID( 'vectorMask' );
                        var keyKind = app.charIDToTypeID( 'Knd ' );
                        ref.putEnumerated( app.charIDToTypeID( 'Path' ), app.charIDToTypeID( 'Ordn' ), keyVectorMaskEnabled );
                        var desc = executeActionGet( ref );
                        if ( desc.hasKey( keyKind ) ) {
                                  var kindValue = desc.getEnumerationValue( keyKind );
                                  if (kindValue == keyVectorMaskEnabled) {
                                            hasVectorMask = true;
              }catch(e) {
                        hasVectorMask = false;
              return hasVectorMask;

  • Script for Acrobat Reader to save as read only after filled out.

    Hi
    I have created a work proposal form to be filled out with an estimate of work to be done and the cost.
    Is there a script that will then let me save the form as read only so recipient can not make any changes?
    Ron A

    Thanks GKaiseril
    I found this in the forums from a previous post by try67
    It works perferctly.
    However in his post he left off the last bracket }
    for (var i=0; i<this.numFields; i++) {
    var f = this.getField(this.getNthFieldName(i));
    if (f!=null && f.type!="button") f.readonly = true;
    Ron A

  • Script for Indesign CS6 - Export Document to preset PDF

    Does anyone know how to do this please?

    Do what? You can't export a document to a preset. You can use a preset to export a document, is that what you mean?
    Check the ESTK object model under Document. Look at the exportFile() method.
    Dave

  • "Check for Updates..." menu item missing Acrobat 9 Mac

    Trying a clean install of Acrobat 9 Pro for Mac on a clean Mac OS X.8.3 Mountain Lion. It take the serial number without issue after launching, but in the Help Menu there is no, "Check for Updates..." item.
    Installed and logged in as a local admin. The only alternative way to update the software is to go to the products update page at:
    http://www.adobe.com/support/downloads/product.jsp?product=1&platform=Macintosh
    To download and manually install in succession TWENTY updates to get from v. 9.0 to v. 9.5.4. This shouldn't be this difficult. I bet the Adobe Chat Customer Service that I'd be able to download and install all TWENTY updates before anyone on this forum could provide me with a solution.
    Do you accept the challenge?

    If you can not download the updates from the help menu any more, then for the MAC the updates are available at http://www.adobe.com/support/downloads/product.jsp?product=1&platform=Macintosh. Generally you have to install these updates in order. It is simplest to download the latest first and work back to see if any can be skipped. Once the product hits end of life (and I think AA9 is there), the only updates that are provided are for critical security updates. For instance there has not been an update for AA 8 since Sept 2011. Since the releases are about every 2 years, it is indeed the end-of-life time in the cycle for AA 9 based on the history of the products. The upgrade may be worth it at some time, particularly as your OS or word processor or such change over time. Since the MAC version does not have PDF Maker (as I understand it), the upgrades may not be as critical for you as for PC folks working with newer versions of MS OFFICE -- who have gotten used to those features.

  • Script for adding a login item for all accounts in the system

    Hi,
    Thanks for reading this query. I am new to the mac environment. I have developed a java application and created an installer of this application for MAC system.I want to run this application on starting the system. So I have written an apple script for adding this application in login items and this script will run immediately after completing installation process. And the entire process is fine. But the problem is, the application is added to login items of only the user who installed the application. But I want to get available the application in the login list of all accounts created in the system. How can I achieve this? Once more thanks in advance. I am attaching my script below:
    +*tell application "System Events"*+
    +* make login item at end with properties {path:"/Applications/MyApplication.app", hidden:true}*+
    +*end tell*+

    Hi,
    Try to use tables RSOSFIELDMAP, RSDSSEGFD and RSTRAN
    Hope it helps
    bhaskar

  • Retrieve Multiple Serial Numbers for given Delivery Document and Item

    Hello Experts,
                          I am currently working on a 2Lis datasource to extract Delivery information.Now it is required to append the
    datasource with field (say ZZSERNO) which should extract ALL Serial Numbers from OBJK table for a given Delivery Item.
    I know that there is a link between table SER01 and OBJK to retrieve the same.However, my concern is- C_T_Data table is
    already providing the Delivery Information and along with that I want to display ALL Serial numbers for a given Delivery Item.
    A delivery Item can have more that one serial number linked to it as what I see in VL03N for a Delivery document.
    So currently in RSA3, I retrieve say 1 record for a given Delivery Document and Item .Now an Item has say 10 Serial Numbers
    associated with it, so i should see 10 Records for that Delivery Document and Item, after executing RSA3.
    Please provide me with the CMOD logic to do so.

    Hi,
    You can Link LIPS and OBJK tables with Delivery and Del Item.........refer below for the code.
    1) Declare an Internal table of type OBJK with fields DEL DOC, DEL ITEM and ZZSERNO .
    2) Declare another Internal Table ITAB_LIPS of type LIPS with required fields say in your case *DEL DOC, DEL ITEM and ZZSERNO....etc.
    3) Use below select statement to extract records from LIPS into ITAB_LIPS that you have declared for to fetch LIPS data.
    Select DEL DOC, DEL ITEM ( here i have included only few fields but as per requirement please add fields here)   from
    LIPS into corresponding fields of Table ITAB_LIPS.
    4) write one more select statement to fetch Serial number data.
    Select DEL DOC, DEL ITEM ZZSERNO  from OBJK into corresponding fields of TABLE ITAB_OBJK for all entries in ITAB_LIPS
    where DEL DOC = ITAB_LIPS-DEL DOC and
                DEL ITEM = ITAB_LIPS-DEL ITEM.
    Loop at ITAB_OBJK.
    Read table ITAB_OBJK into ITAB_LIPS with keys DEL DOC    DEL ITEM.
    ITAB_LIPS-DEL DOC = ITAB_LIPS-DEL DOC
    ITAB_LIPS-DEL ITEM = ITAB_OBJK-DEL ITEM.
    IF SY-SUBRC = 0.
    ITAB_LIPS-ZZSERNO = ITAB_OBJK-ZZSERNO.
    ENDIF
    ENDLOOP.
    Hope the above code helps
    Sujan

  • How to hide/disable menu items using Javascript in Acrobat 9 pro or later

    We just wanted to know on how to hide/disable menu items for e.g. 'Open' menu item under 'File' menu in Acrobat 9 or later on Mac using Javascript. It would be useful if you could provide if any other option is in place already.

    Not sure it will work, but you can try using the app.hideMenuItem() method. See reference here.

  • 1.Assign shortcuts to scripts 2. Actions remember insert menu commands when app is started

    It been ask before... Many times.  There is probably a current request right now.   It will be asked again... And again... And again...  Under keyboard shortcuts, allow scripts to assigned a shortcut.  Also have actions remember insert menu commands when the application is restarted.   Was patiently waiting years ago... Now I am starting to grit my teeth. When my dentist lectures me over grinding my teeth, she will not be as forgiving as I have been over the years.   It is time to set a small portion of available resources to fix and add functionality to this.

    OK, so at least we have one solution "with shortcut for script problem":
    1. Put "script.jsx" into folder  Mac OS X > Applications/Adobe Illustrator {version}/Presets/{Lang}/Scripts
    2. Make Action, "insert menu item" in it -> select "File\Scripts\script.jsx"
    3. Assign shortcut to this action. PROFIT
    But! The problem is: Illustrator "forgets" about menu item in action after restart.
    Therefore you can use script shortcut only one time per "session", and every time starting we need to make "insert menu item".
    Well, this is the second part of topic question, I guess. And I don't have solution. This is what I got:
    0. If you have several scripts with shortcuts, everyday inserting all scripts in actions is boring. Make a folder for this actions. And "Save actions" it to ".aia"
    1. Every time starting Illustrator — Delete folder with your special "scripts-actions" (because it's actions is emptied!)
    2. Then go to "File>Scripts>...". Now just gently stroke your scripts with cursor. Like a kitty. Ahahaha! )) It is not a joke!!! Do not start the scripts, just enter to its' submenu.
    3. Now "Load actions" from your .aia. Have a nice automated session with your magic scripts! This works for me. If you have daily work routine and 5-10 scripts, this is the best solution.
    * If you skip step 2, you will get "Some event has not been registered for actions"! And empty action. If first you will stroke the kitty, you will get your magic shortcuts after "Loading actions"! As I told, this not a joke, but strange Illustrator behavior.
    * If you did not delete previous folder (step 1), you'll get 2 folders with actions, old one — without scripts, new one — without assigned shortcuts. And nothing works. Delete all and reload.
    * One more thing. I have Scriptographer Extension. This extension manages scripts (js) and has "scriptographer palette". In this palette I found shortcuts, to execute selected script and etc. So, in theory it is possible to rebuild this extension with shortcuts for some scripts. Maybe we should dig in that direction? I'm too stupid for this.

  • Creating a document script for Clock in Acrobat Professional.

    Hi,
    I am trying to add a field on my PDF form which shows a continuous clock.
    I do not know how to add code to a document script in Acrobat Professional.
    "Advaned/ Javascript/ Set Document Actions" is greyed out.
    Thanks in advance,
    Damo.

    It sounds like you have Acrobat 9 or earlier?  And is this a LiveCycle form?
    In therory, clock code is very simple. It just writes the formatted time to a text field. But the details depend on the type of form, LiveCycle or AcroForm
    Thom Parker
    The source for PDF Scripting Info
    pdfscripting.com
    All About PDF Stamps in Acrobat and Paperless Workflows - THE BOOK!
    The Acrobat JavaScript Reference, Use it Early and Often
    Then most important JavaScript Development tool in Acrobat
    The Console Window (Video tutorial)
    The Console Window(article)
    Having trouble, Why Doesn't my Script Work?

  • Adobe X Std - Electronic Signatures and Flattening Document

    We are experimenting with Electronic signatures using Adobe X std.  Once a signature is added to a document, we want to flatten the document so that the signature and all other annotations can not be changed.   I have found the javascript code needed to flatten documents and it works fine for all annotations, but not for the signatures.   After adding a signature and choosing to flatten the document, I get the error: 
    NotAllowedError: Security settings prevent access to this property or method.
    Doc.flattenPages:266:App FlattenPages:Exec
    I don't know what security settings or other changes are needed to prevent the error.   Help would be greatly appreciated!

    Validating signatures is the normal and most important thing about them. That is how they work. This is fundamental stuff which you must explain to the users of the document as surely as they need to know how to use a pen for paper signatures.
    Consider: if you come upon a PDF that is signed by your boss, how do you know it is signed by your boss? Because the signature has his name on it? Hardly the proof needed to fire a man or release a million dollars.
    But if your boss sent his public key to you before, you can check the signature in the file against the public key, and this is absolute proof.  Validating has to be done every single time, otherwise it is like sending a paper document with "trust me, this one's fine" written on a sticky note.
    However, a group of people can share signatures and arrange that validation is automatic when files are opened. Don't know the details.

  • Script for combining multiple documents?

    hi there,
    well I think there's been a lot of discussion going towards this topic. My concerns aren't quite lining up with the topics. We using a script for placing images, and instead of going document to document...I would like to combine all the indd documents...there's usually at least 24...and to import NOT as pdf's, just as individual pages within the one document...insert my images using the other script...and then later choosing to re-export the pages as individuals. With ascending order of page numbers in the correct sequence they were brought in as.
    thanks for the help.

    -Printing by folder only helps when I need to run one copy of the files, typically I need to print multiple copies or save them for future printing.  Also I have had errors printing via that method before because it will sometimes overload the printer queue.
    -It would be great if clients always provided print ready documents, but that is usually not the case and I have to correct it which is why I am here asking how to do this.
    And if you can not do that then you need to insert a blank page into the files with an odd number of pages.
    Right.  That is what I am looking for; something to automate inserting a blank page into files that have an odd number of pages WITHOUT knowing the documents page counts before hand and WITHOUT having to manually insert blank pages.

Maybe you are looking for