6 Replies Latest reply on Jul 9, 2017 6:41 PM by iGraphix_777

    Scripting a PostScript File directly to folder no user interaction

    iGraphix_777 Level 1

      Hey guys hoping you might be able to point me in the right direction here. I'm a noob at scripting Illustrator and have been racking my brain over this script for a few days now.  What i would like to achieve is creating a script that will print a Postscript file to a designated folder with no user interaction. This folder will be on an external volume but just trying to get it to a folder on my desktop at this point... so this is what i started with initially :

       

      var myDoc = app.activeDocument;

       

      var options = new PrintOptions();

      options.printPreset="PS_print";

       

      myDoc.print(options);

       

      Simple, and it works except that i still have to designate the folder in which the PostScript will be saved..  so i did some digging and came across this code Muppet Mark created on a thread called " Script: print to PostScript" here Re: Script: print to PostScript .  i ran it through ExtendScript and it executed once fine only thing i need to change is where the file is saving.   So i edited it and came up with this:

       

      printPostScript();

       

      function printPostScript(){

          app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS; 

         

          var docPath, docs, opts, psPath;

         

          jobOpts = new PrintJobOptions(); 

               

              opts = new PrintOptions(); 

                

              opts.printPreset = 'PS.print'; 

               

              opts.jobOptions =  jobOpts;

         

         

          docPath = decodeURI( app.activeDocument.fullName ); 

               

                  psPath = new File( "~/Desktop/TEST" ); 

               

                  jobOpts.file = File( psPath ); 

           

                  app.activeDocument.print( opts ); 

           

                  app.activeDocument.close( SaveOptions.DONOTSAVECHANGES );

         

         

         

           app.userInteractionLevel = UserInteractionLevel.DISPLAYALERTS; 

         

         

      }

       

      problem is every time i use the userinteractionLevel command illustrator throws me an error  for the line where its supposed to execute the actual printing
      "app.activeDocument.print( opts );"  Or at least im assuming the userinteractionLevel command is the culprit as Illustrator throws me the same error with the script   that i started with now when it didnt before.   If any of you guys could help me out here it would be appreciated!

       

      Thanks

        • 1. Re: Scripting a PostScript File directly to folder no user interaction
          [Jongware] Most Valuable Participant

          You mention twice that you get "an" error. Don't keep us in suspense! What error do you get?

          • 2. Re: Scripting a PostScript File directly to folder no user interaction
            iGraphix_777 Level 1

            I guess it would help if gave the error huh lol sorry for the undue suspense.

             

             

            It tells me an Illustrator error occurred: 20052('TN")Screen Shot 2017-07-08 at 10.54.49 AM.png

             

            Then when i try and go back and run the initial code that was executing just fine before it will highlight the line
            "myDoc.print(options);"

            and just say the operation was cancelled. What am I doing incorrect ?

            • 3. Re: Scripting a PostScript File directly to folder no user interaction
              Laubender Adobe Community Professional & MVP

              What am I doing incorrect ?

              Hi,

              hard to tell what is provoking the error.

               

              At least you should give the file you are writing a decent name.

              Currently you are writing a file that is named "TEST" without suffix.

               

              I tested your code using one of my print presets and it was running as expected.

              Illustrator CC v 17.1.0 on OS X 10.6.8

               

              Regards,
              Uwe

              • 4. Re: Scripting a PostScript File directly to folder no user interaction
                iGraphix_777 Level 1

                Hi Uwe !

                 

                Thanks for testing the code out for me. Its nice to know the code is executing, maybe it just something w/ my personal computer we're running the same version of illustrator. 

                 

                Don't pay attention to the "TEST" name that's just me being a scripting noob and trying to figure out how to write the PostScript file to the folder located on my desktop named "TEST", the file name is actually "0904USCPWU_Franky_WHT-CRD_CF_SEPS.eps". 

                 

                i thought theses lines of code

                 

                docPath = decodeURI( app.activeDocument.fullName ); 

                         

                            psPath = new File( "~/Desktop/TEST" ); 

                 

                got the actual file name then wrote it to that location. how should i be doing this ?

                • 5. Re: Scripting a PostScript File directly to folder no user interaction
                  Laubender Adobe Community Professional & MVP

                  You assign new File() to a variable named psPath. It's nothing magic with that variable name. You could name it whatEverThatIsWhatIsStoredInMe; if you assign a file and not a folder the file is stored and not the folder.

                   

                  So in effect you are storing a file in variable psPath. The name of the file is simply TEST and is saved directly on the Desktop. If you want a file in folder TEST then add a reasonable file name to the string.

                   

                  "~/Desktop/TEST/myPostScriptFile.ps"

                   

                  Or have a new look into the script where you copied the code from.

                  There a file is done by using the AI file name. But in a different line of code you did not copy over. The suffix ai is replaced by ps using a regular expression.

                   

                  If you want to use the name of your active document you could do something like that where a regular expression is used to replace the .ai at the end of the name with .ps.

                   

                  Here an example:

                  psPath = new File( "~/Desktop/TEST/"+app.activeDocument.name.replace(/\.ai$/,".ps") );

                   

                  Now you are using TEST as a folder name plus the name of the active document as base name for the file.

                   

                  ps stands for PostScript. Not for EPS ( Encapsulated PostScript ).

                  That's a difference! If you want an EPS file you have to use Illustrator's save feature.

                   

                  Regards,
                  Uwe

                   

                  //EDITED

                  • 6. Re: Scripting a PostScript File directly to folder no user interaction
                    iGraphix_777 Level 1

                    Thanks for the assist and insight Uwe!

                     

                    your explanation and example "psPath = new File( "~/Desktop/TEST/"+app.activeDocument.name.replace(/\.ai$/,".ps") ); "

                    made it execute perfectly.

                     


                    Below is the final code if anyone is interested:

                     

                     

                    function printPostScript(){

                        app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS; 

                       

                        var docPath, opts, psPath;

                       

                        jobOpts = new PrintJobOptions(); 

                             

                            opts = new PrintOptions(); 

                              

                            opts.printPreset = 'PS.print'; 

                             

                            opts.jobOptions =  jobOpts;

                       

                       

                        docPath = decodeURI( app.activeDocument.fullName ); 

                             

                        psPath = new File( "~/Desktop/TEST/"+app.activeDocument.name.replace(/\.eps$/,".ps") );

                             

                        jobOpts.file = File( psPath ); 

                         

                        app.activeDocument.print( opts ); 

                         

                        app.activeDocument.close( SaveOptions.SAVECHANGES );

                       

                       

                       

                         app.userInteractionLevel = UserInteractionLevel.DISPLAYALERTS; 

                       

                       

                    }

                     

                    printPostScript();

                    1 person found this helpful