InDesign CS6自動化作戦 (InDesign CS6 Automation Operation)

ソケット通信でWebサーバーのHTMLファイルを取得し配置する

■プログラム説明(ソースコード説明)
ソケット通信を使うにはnew Socketでソケット通信オブジェクトを作成します。読み込むファイルの文字コード(エンコード)をencodingプロパティに指定します。次にopen()を使って読み込むサーバー名とポート名を指定します。ポート名は:で区切ります。サーバーへの送信はwrite()を使います。サンプルではWebサーバーからHTMLファイルを取得するのでGETコマンドを出力しています(サーバーによっては他のパラメータも必要なことがあります)。
サーバーから送り返されたデータを読み込むにはread()を使います。読み込まれたデータをFile.decode()を使って復元し以後の処理をおこないます。処理が終わったらclose()でソケット通信を終了します。

■ソースコード
var docObj = app.documents.add();
var tfObj = app.activeDocument.pages[0].textFrames.add(); // 1ページ目に新規作成
tfObj.visibleBounds = ["1cm","2cm","28cm","18cm"];
tfObj.contents = getWebData("www.openspc2.org:80");

 // ソケット通信を使って指定されたサーバーのデータを読み込み返す
function getWebData(sURL){
var sObj = new Socket;
sObj.encoding = "utf8";
if (sObj.open(sURL)){
sObj.write("GETn"); // HTTPサーバーへのリクエスト(GETコマンド)
var text = "";
while(temp = sObj.read()){
text = text + File.decode(temp);
}
sObj.close();
return text;
}
return null;
}

■ポイント
 なし

■実際のスクリプトをダウンロード(sample.jsx.zip)

写真素材 PIXTA