クリエイター手抜きプロジェクト[190]InDesign CS3編 InDesign CS3でFTP、HTTP通信を行う(5)/古籏一浩

投稿:  著者:  読了時間:8分(本文:約3,900文字)


今回はFTPの処理について説明します。

CS3でサポートされているのはftpだけでなくsftpも対応しています(こちらではセキュアな環境での動作は確認していません)。
FTPの前に、HTTP同様以下のスクリプトを記述しておく必要があります。これがないとエラーとなり動作しません。これもHTTPの時と同様で最初に一度だけ実行すればよく、毎回チェックする必要はありません。

if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib = new ExternalObject('lib:webaccesslib');
}

それでは、FTPでJPEG画像ファイルをダウンロードしてローカルのハードディスクに保存してみます。FTPサーバーにアクセスするには、サーバー名とユーザー名が必要になります。ここではサンプルとして以下のようにしてあります。



サーバー名:ftp://www.openspc2.org/
ユーザー名:adobe
パスワード:indesign

アクセスするディレクトリ(フォルダ)はユーザーのホームディレクトリとし、そこにsample.jpgファイルがあるものとします。
まず、アクセスするFTPサーバーを指定し、FTP通信用のオブジェクトを作成する必要があります。これはnew FtpConnection()を使い、パラメータにアクセスするFTPサーバー名を指定します。例えば ftp://www.openspc2.org/ にアクセスするのであれば、以下のように書きます。

ftp = new FtpConnection("ftp://www.openspc2.org/");

次に、ユーザー名を指定します。ユーザー名はnew FtpConnection()により作成されたFTPオブジェクトのusernameプロパティに設定します。パスワードも同様に、FTPオブジェクトのpasswordプロパティに設定します。

アクセスするディレクトリを指定するには、FTPオブジェクトのftpDirにアクセスしたいディレクトリのパスを指定します。

この時点ではFTPサーバーにはアクセスしません。ファイルをダウンロードする時点でサーバーにアクセスを行います。

JPEGファイルをダウンロードするには、FTPオブジェクトのget()を使います。最初のパラメータにダウンロードするファイル名を指定します。sample.jpgであればftp.get("sample.jpg")とします。get()には、2番目のパラメータも指定する必要があります。2番目のパラメータは、ローカルのハードディスクに保存する時のファイルオブジェクトを指定します。ファイルオブジェクトはnew File()を使って作成することができます。new File()のパラメータに保存先のパスとファイル名を指定します。

無事にファイルがダウンロードされるとget()はtrueを返します。失敗した場合にはfalseを返すので、これによりエラーメッセージを表示する、処理を中断するといったことが可能になります。

ファイルをダウンロードしたら、close()を使ってサーバーとの通信を終了します。サンプル1が実際のプログラムになります。

ファイルがダウンロードされ、ローカルのハードディスクに保存されれば、これまで通り指定したパスにある画像ファイルを読み込み配置することができます。サンプル2が、FTPサーバーからダウンロードしたJPEGファイルをInDesign上に配置するものです。この場合、ダウンロードしたファイルは不要なので、remove()を使ってファイルを削除します。画像をリンクする場合には、削除しないようにしてください。

サンプルではJPEG画像ファイルをダウンロードしていますが、テキストファイルやPDFでも同様に処理することが可能です。

●サンプル1
// 画像ファイルをダウンロード
getFtpData("ftp://www.openspc2.org","adobe","indesign");

// FTPを使って指定されたサーバーのデータを読み込みファイルオブジェクトを返す
function getFtpData(sURL, userName, password){
if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib =
new ExternalObject("lib:webaccesslib");
}
var ftp = new FtpConnection(sURL);
ftp.username = userName;
ftp.password = password;
ftp.ftpDir = "./";
var file = new File("%7E/downloadSample.jpg");
var flag = ftp.get("%7E/sample.jpg",file);
if (flag == false){
alert("ファイルをダウンロードできませんでした");
}
file.close();
ftp.close();
return file;
}


●サンプル2
// FTPサーバーにある画像ファイルをダウンロードしてInDesign上に配置する
(function(){
var imgObj = app.activeDocument.textFrames.add();
imgObj.visibleBounds = ["2cm", "3cm", "10cm", "14cm"];
imgObj.contentType = ContentType.graphicType; // 画像タイプに設定
var fileObj = getFtpData("ftp://www.openspc2.org","adobe",
"indesign","./","./sample.jpg", "%7E/sample.jpg");
imgObj.place(fileObj);
imgObj.fit(FitOptions.fillProportionally);
fileObj.remove();
})();

// FTPを使って指定されたサーバーのデータを読み込みファイルオブジェクトを返す
function getFtpData(sURL, userName, password, dir, downloadFile,
tempFile){
if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib =
new ExternalObject("lib:webaccesslib");
}
var ftp = new FtpConnection(sURL);
ftp.username = userName;
ftp.password = password;
ftp.ftpDir = dir;
tempFile = new File(tempFile);
var flag = ftp.get(downloadFile,tempFile);
if (flag == false){
alert("ファイルをダウンロードできませんでした");
}
ftp.close();
return tempFile;
}


【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/ >
2009年初なのでおきまりのご挨拶を。
「あけましておめでとうございます。今年もよろしくお願いします」
年末年始はいろいろ作ったりしてました。作りかけみたいなのと、自分の勉強用みたいなものが多い(試験的なものもあります)のですが、何かのお役に立てば。

・【短期集中連載】この冬作ろう!jQueryプラグイン講座
< http://www.openspc2.org/JavaScript/Ajax/jQuery_plugin/index.html >

・Adobe Photoshop CS4使い方辞典
< http://www.openspc2.org/reibun/PhotoshopCS4/ >

・Adobe Photoshop CS4自動化作戦
< http://www.openspc2.org/book/PhotoshopCS4/ >

・Adobe Illustrator CS4自動化作戦
< http://www.openspc2.org/book/IllustratorCS4/ >

・フルサイズフリー素材(試験的に作成。というよりHDDの空きがないので…)
< http://www.openspc2.org/sozai/fullsize/index.html >

・Google Chrome ver 1.0 使い方辞典(もうver 2.0の話が…)
< http://www.openspc2.org/reibun/GoogleChrome/1.0/ >

photo
組版時間を半減する! InDesign自動処理実例集
(株)シータス
技術評論社 2008-11-25
おすすめ平均 star
starプログラミング経験のない方も気軽に挑戦してほしいです

1ランク上の技を身につけるInDesignの強化書 [+DESIGNING Professional Bible] (マイコミムック) (MYCOMムック +DESIGNING Professional Bi) InDesign 逆引きデザイン事典[CS3/CS2/CS対応] Adobe InDesign「文字組み」徹底攻略ガイド InDesign CS3の仕事術 文字のデザイン・書体のフシギ 神戸芸術工科大学レクチャーブックス…2 (神戸芸術工科大学レクチャーブックス)



photo
改訂第4版 JavaScript ポケットリファレンス
古籏 一浩
技術評論社 2006-10-18
おすすめ平均 star
starJavaScriptを使ったプロジェクトのお供に是非
starJavaScript仮免者以上の方へ
starバランスの良いバイブル
star中級者向けです。

[改訂版] PHP ポケットリファレンス (Pocket reference) 改訂新版 SQLポケットリファレンス (Pocket reference) スタイルシート ポケットリファレンス (Pocket reference) 改訂第5版 オールカラー  HTML ポケットリファレンス (POCKET REFERENCE) Ajax ポケットリファレンス (POCKET REFERENCE)

by G-Tools , 2009/01/19