InDesign CS3でFTP, HTTP通信を行う (1)

2008年11月に「組版時間を半減する! InDesign 自動処理実例集」が発売されました。今回から7回にわたって、この書籍に掲載できなかった原稿を一部修正し掲載します。このネタ元は以下のアドビフォーラムにあるものです。

http://www.adobeforums.com/webx/.3c05d466

それで注意事項なのですが、動作が確認できているのはMacOS X版のInDesign CS3のみです。Windows版に関しては上記フォーラムなど参考にしてやってみるのもよいかと思います(Windows XPでやってもらったのですが、うまくいきませんでした)。

掲載できなかったネタはタイトルにあるようにInDesign CS3でFTP, HTTP通信を行うというものです。InDesign CS3やPhotoshop CS3にはソケット通信機能が搭載されており、Webサーバーとやりとりしたりメールを送信することができます。
とは言え、InDesignユーザーがいきなりソケット通信機能を使ってFTPやHTTPの処理を行うのはハードルが高いでしょう。
そうでなくても、認証機能の搭載やバイナリファイルの処理などが絡むと面倒か場合によっては不可能な場合もあります。

そこで、InDesign CS3を改造してFTP, HTTP通信ができるようにします。
InDesign CS3アプリケーション本体に手を加えるので自己責任で行ってくださるようお願いします。失敗しておかしくなった場合にはInDesign CS3を再度インストールすれば元にもどります。また、これから説明する手順でやってもうまくいかない可能性もあります。

改造すると言ってもBridge CS3にある機能をファイルごとコピーするだけで、さらに決められたプログラムをターミナルから実行するだけなので簡単に終わります。

InDesign CS3で直接FTP、HTTP、HTTPSが利用できれば直接サーバーにあるJPEGファイルなどをダウンロードし、その後ページ上に配置することが可能になります。

今回は準備段階ということでInDesign CS3を改造します。

以下のシェルスクリプトをテキストエディタで入力し保存します。とりあえず、ホームフォルダ内にIDCS3netCopy.shという名前で保存します。次にアプリケーションフォルダ内にあるユーティリティフォルダ内のターミナルを起動します。ターミナルが起動したら以下のように入力しリターンキーを押します。

chmod 755 ./IDCS3netCopy.sh

次に以下のように入力しターミナルからシェルスクリプトを実行します。

./IDCS3netCopy.sh

実行すると処理するごとに英文字が表示されます。特にエラーなく終了したらターミナルを終了します。
これで、Bridge CS3の通信機能がInDesign CS3に入ったことになります。

#!/bin/sh
cd "/Applications/Adobe InDesign CS3/Adobe InDesign CS3.app/Contents/MacOS"
cp -R "/Applications/Adobe Bridge CS3/Bridge CS3.app/Contents/MacOS/webaccesslib.bundle" .

ln -s webaccesslib.bundle/AdobeLibraries/libcurl.3.0.0.dylib libcurl.3.0.0.dylib
ln -s webaccesslib.bundle/AdobeLibraries/libSSL.dylib libSSL.dylib
ln -s webaccesslib.bundle/AdobeLibraries/libCrypto.dylib libCrypto.dylib
ln -s webaccesslib.bundle/AdobeLibraries/libCoreTypes.dylib libCoreTypes.dylib
ln -s webaccesslib.bundle/AdobeLibraries/libChar16.dylib libChar16.dylib

cd "/Applications/Adobe InDesign CS3/Adobe InDesign CS3.app/Contents/Frameworks"
ln -s ../MacOS/webaccesslib.bundle/AdobeLibraries/NetIO.framework NetIO.framework

 上記の処理が正しく行われInDesign CS3でFTP, HTTPが使えるかどうか以下のチェック用スクリプトで確認してください。

●チェック用スクリプト
// FTP, HTTPチェッカー
(function(){
if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib = new ExternalObject('lib:webaccesslib');
}
var sURL = "www.yahoo.co.jp";
var ftp = new FtpConnection("ftp://"+sURL);
var http = new HttpConnection("http://"+sURL);
alert(ftp);
alert(http);
})();

のチェック用スクリプトをESTK (Extedn Script ToolKit ver 2) から実行すると正しく機能が入った場合には以下のようなメッセージが連続してアラートダイアログに表示されます。うまくいかなかった場合にはエラーで停止します。

[object FtpConnection]
[object HttpConnection]

エラーになってしまった場合には最初からやり直して下さい。なお、InDesign CS3のみ可能でInDesign CS2ではできません。InDesign CS4でできるかどうかは現時点では分かりません。

また、今後に掲載するサンプルプログラムでは、すでにInDesign CS3上でドキュメントが開かれている、もしくは新規に作成した状態になっていることを前提にしています。

ということで次回に続きます。