Skip to content Skip to sidebar Skip to footer

Execute External Script In ExtendScript For Illustrator

Summary: Is there a way to use the execute() function to pass a parameter to a Python script, and have the Python script use the parameter in its execution, then return the result

Solution 1:

Option 1 (BridgeTalk)

I had to do something like this to run an external PNG processor from both Photoshop and Illustrator. Neither of those applications have the ability to execute external programs from ExtendScript. (See Option 2.) Adobe Bridge's app object has a system method that executes a command in the system shell. Using a BridgeTalk object, you can call that method remotely from Illustrator. You'll only get the exit code in return, though. So you'll need to redirect your program's output to a file and then read that file in your script.

Here's an example of using BridgeTalk and Adobe Bridge to run an external program:

var bt = new BridgeTalk();
bt.target = 'bridge';
bt.body = 'app.system("ping -c 1 google.com")';
bt.onResult = function (result) {
    $.writeln(result.body);
};
bt.send();

Pros

  • Asynchronous
  • Can easily retrieve the exit code
  • Can use shell syntax and pass arguments to the program directly

Cons

  • Adobe Bridge must be installed
  • Adobe Bridge must be running (although BridgeTalk will launch it for you, if needed)

Option 2 (File.prototype.execute)

I discovered this later and can't believe I missed it. The File class has an execute instance method that opens or executes the file. It might work for your purposes, although I haven't tried it myself.

Pros

  • Asynchronous
  • Built into each ExtendScript environment (no inter-process communication)

Cons

  • Can't retrieve the exit code
  • Can't use shell syntax or pass arguments to the program directly

Solution 2:

Extendscript does support Socket, following is the code snippet

reply = "";
conn = new Socket;
// access Adobe’s home page
if (conn.open ("www.adobe.com:80")) {
// send a HTTP GET request
conn.write ("GET /index.html HTTP/1.0\n\n");
// and read the server’s reply
reply = conn.read(999999);
conn.close();
}

Post a Comment for "Execute External Script In ExtendScript For Illustrator"