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

今回はテキストファイルの読み込みとBASIC認証です。

サーバー上にはHTMLファイルだけでなく単純なテキストファイルも存在します。この場合も方法は全く同じでURLさえ間違えなければ大丈夫です。ただし、文字コードによっては自動判別できずに文字化けしてしまう可能性もあります(あまりに短いテキスト(日本語文字が含まれない100文字以下)の場合など)。
以下のサンプルは読み込んだテキストファイルをInDesign上に配置するものです。


// サーバー上にあるHTMLファイルを読み込み配置する
(function(){
var tfObj = app.activeDocument.textFrames.add();
tfObj.visibleBounds = ["2cm", "3cm", "10cm", "14cm"];
var fileObj = getHttpData("http://www.openspc2.org/book/InDesignCS2/sample.txt", "~/temp.txt");
var flag = fileObj.open("r");
if(flag == true){
var text = fileObj.read(); // ファイル内容を全て読み込む
tfObj.contents = text;
fileObj.remove(); // 一時的に作成したファイルを削除
}
})();
// HTTPを使って指定されたサーバーのデータを読み込みファイルオブジェクトを返す
function getHttpData(sURL, filePath){
if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib = new ExternalObject("lib:webaccesslib");
}
var http = new HttpConnection(sURL);
http.response = new File(filePath);
http.execute();
http.response.close();
return new File(filePath);
}

■BASIC認証の場合
 業務で使われるデータの多くは外部に公開することができず、アクセスが制限されています。そのような場合、Webサーバーに用意されている簡単な認証方法 (BASIC認証) によってデータが保護されていることがあります。
 InDesign CS3ではBASIC認証にも対応しており、ユーザー名とパスワードを指定しておけば自動的にログインし必要なデータを読み込む(ダウンロード)することができます。
 ユーザー名はhttp.usernameプロパティに、パスワードはhttp.passwordプロパティに設定しておきます。以下のサンプルでは
パスワードが必要なhttp://www.dgcr.com/secure/フォルダ内にあるtest.txtをダウンロードしInDesign上に配置するサンプルです。なお、URLとユーザー名、パスワードはあくまでもサンプルです。ここではユーザー名をadobe、パスワードをindesignとしていますので、必要に応じて書き換えてください。このサンプルでは以下の行にユーザー名とパスワードを指定しています。

var fileObj = getHttpData2("http://www.dgcr.com/secure/test.txt", "~/temp.txt", "adobe","indesign");


// パスワード付きページ内にあるテキストファイルを読み込みInDesign上に配置する
(function(){
var tfObj = app.activeDocument.textFrames.add();
tfObj.visibleBounds = ["2cm", "3cm", "10cm", "14cm"];
var fileObj = getHttpData2("http://www.openspc2.org/~adobe/secure/test.txt", "~/temp.txt", "adobe","indesign");
var flag = fileObj.open("r");
if(flag == true){
var text = fileObj.read(); // ファイル内容を全て読み込む
tfObj.contents = text;
fileObj.remove(); // 一時的に作成したファイルを削除
}
})();
// HTTPを使って指定されたサーバー上の保護されたデータを読み込みファイルオブジェクトを返す
// (ApacheサーバーのBasic認証)
function getHttpData2(sURL, filePath, id, pw){
if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib = new ExternalObject("lib:webaccesslib");
}
var http = new HttpConnection(sURL) ;
http.response = new File(filePath) ;
http.username = id; // ユーザー名
http.password = pw; // パスワード
http.execute() ;
http.response.close() ;
return new File(filePath);
}
 

[サンプルをダウンロード]