InDesign CS3/CS4では、文字にハイパーリンクを指定することができます。ページ内の移動だけでなく、Webサイトへのリンクもできます。
今回はInDesignのテキストフレーム内にある文字を、Webサイトへのリンク先とみなして自動的にハイパーリンクを作成するものです。これにより、PDFで書き出した際に文字をクリックすると、Webブラウザが起動し該当ページが表示されるようになります。
まず、最初のサンプルは単純にWebサイトへのURLがテキストフレームに書かれているパターンです。
http://www.openspc2.org/
※この場合、「http://www.openspc2.org/」がハイパーリンクとみなされ処理されます。
ハイパーリンクを作成したいテキストフレームを作成してから、以下のスクリプトを実行します。
今回はInDesignのテキストフレーム内にある文字を、Webサイトへのリンク先とみなして自動的にハイパーリンクを作成するものです。これにより、PDFで書き出した際に文字をクリックすると、Webブラウザが起動し該当ページが表示されるようになります。
まず、最初のサンプルは単純にWebサイトへのURLがテキストフレームに書かれているパターンです。
http://www.openspc2.org/
※この場合、「http://www.openspc2.org/」がハイパーリンクとみなされ処理されます。
ハイパーリンクを作成したいテキストフレームを作成してから、以下のスクリプトを実行します。
(function(){
var selObj = app.activeDocument.selection;
for(var i=0; i< selObj.length; i++){
for(var j=0; j< selObj[i].paragraphs.length; j++){
var txtObj = selObj[i].paragraphs[j];
var text = txtObj.contents;
var linkText = app.activeDocument.hyperlinkTextSources.add(txtObj);
var linkURL = app.activeDocument.hyperlinkURLDestinations.add(text);
var link = app.activeDocument.hyperlinks.add(linkText, linkURL);
link.borderColor = [255, 255, 255]; // リンク枠の色
}
}
})();
ただし、日本語Wikiや日本語ドメインなど日本語が含まれていると正しくリンクできません。デコードしても駄目だったので、日本語が含まれている場合は残念ながら駄目です。何かうまい回避方法があれば、メールいただけると助かります。
上記サンプルでは一行全てがURLになっていることが前提ですが、実際には文章の途中にURLが記述されていることもあります。以下のスクリプトは、文中に http://
の文字が含まれている場合に http://
から改行コードの前の文字までをURLと見なしてハイパーリンクを作成します。
例1)
よく使うWebサイト、検索エンジンと言えばhttp://ww.google.co.jp/
※この場合、「http://ww.google.co.jp/」がハイパーリンクとみなされ処理されます。
例2)
よく使うWebサイト、検索エンジンと言えばhttp://ww.google.co.jp/です。
※この場合、「http://ww.google.co.jp/です。」がハイパーリンクとみなされ処理されます。
(function(){
var selObj = app.activeDocument.selection;
for(var i=0; i< selObj.length; i++){
for(var j=0; j< selObj[i].paragraphs.length; j++){
var txtObj = selObj[i].paragraphs[j];
var text = txtObj.contents;
if ((p = text.indexOf("http://
")) > -1){ // 文中にhttp://があればハイパーリンクのスタイルを設定
var srcText = txtObj.contents.substring(p, text.length-1);
var linkText = app.activeDocument.hyperlinkTextSources.add(txtObj);
var linkURL = app.activeDocument.hyperlinkURLDestinations.add(text);
var link = app.activeDocument.hyperlinks.add(linkText, linkURL);
link.borderColor = [255, 255, 255]; // リンク枠の色
}
}
}
})();
なお、どちらのスクリプトも、すでに同名のリンク先が存在するとエラーになります。
【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>
CS4は入れていないのですが、もしかしたらCS4だと日本語リンクでもOKかもしれません。あと、濱村さんにWikipediaには固定リンクがあるというのを教えてもらいました。どうもありがとうございます。
おかげさまで目標販売数超えました(まあ、目標が少なかったというのはありますが)
・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/
>
新JavaScript例文辞典はちょこちょこ追加してます。
・新JavaScript例文辞典
< http://www.openspc2.org/reibun/javascript2/index.html
>
- JavaScript 現場で必要なテクニックのすべて
- MdN 2010-02-15
- 改訂第4版 JavaScript ポケットリファレンス
- 技術評論社 2006-10-18
- おすすめ平均
- 実用的で分かり易い
- JavaScriptを使ったプロジェクトのお供に是非
- JavaScript仮免者以上の方へ
- バランスの良いバイブル
- 中級者向けです。
by G-Tools , 2010/02/22