パッケージ後のハイパーリンクについて

[8600]パッケージ後のハイパーリンクについて 投稿者:あんぐり 投稿日:2006/03/24(Fri) 13:21
Windows XP、InDesign CS2使用です。

ハイパーリンクについて質問です。
ブック内の別ドキュメントにハイパーリンク設定しています。
そのブックをパッケージすると、パッケージ後のデータでは、ハイパーリンク先がブック内のドキュメントにリンクされておらず、リンクが外れてしまいます。
パッケージ後の、リンクが切れてしまったハイパーリンクを一括で更新する方法とかありますでしょうか?

分かりにくい説明で申し訳ないのですが、よろしくお願いします。
» 1
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:流星 投稿日:2006/03/25(Sat) 19:52
当方CS2ではないので、
直接の回答ではないのですが、
パッケージ化すると外れるという
事ですので、パッケージ化しない
方法を考えてみてはどうでしょう?
パッケージ化する理由は何ですか?
そもそも制作時にきちんとファイル
管理していれば、パッケージ化の
恩恵は低いと思います。
当方の制作環境では、
下版後にデータ納品もするのですが、
未使用のファイルを納品したり
しないように、未リンクファイルを
スクリプトで調査して、ファイル削除
などの処置を自動化しています。

どういう時にパッケージ化しないと
いけないのか。
まずは、ワークフローの問題点が
ないかを教えて下さい。
そうすれば、先達がヒントを
くれると思いますよ。
» 2
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:あんぐり 投稿日:2006/03/27(Mon) 11:18
回答ありがとうございます。

もともと先方で作成されたデータが支給され、
それを元に多言語展開しています。
作成を終えたデータについては、
先方の方から「パッケージして納品してほしい」と言われています。

先方からデータが送られてきた時点で、
パッケージされてくることもあります。
今回はこのパターンで、
ハイパーリンクが切れた状態からの
スタートとなりました。
今回は手作業で修正して納品しましたが、
今後も同様の事態が想定されますので、
お知恵をいただければ、と思っています。
» 3
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:流星 投稿日:2006/03/27(Mon) 19:11
※CS2で検証した結果ではないので、
 間違っているかも知れません。
 その点を理解頂ければと思います。

CS1で検証した所、パッケージ化しても
ハイパーリンクは外れませんでした。
相対的なファイルPathが変わらなかった為です。
パッケージ化の際に保存する場所が影響します。

まず、正しく設定したブックの存在する絶対パスを
書き換えてみて下さい。
例)c:\test\hogehoge.indb → c:\test2\hogehoge.indb

ハイパーリンク外れますよね?
絶対的な位置が変わったのです。

まずは、フォルダ構成(ファイルの絶対的なPath)を
先方の環境とご自身の環境を合わせます。
そしてファイルの受け渡しを行って下さい。
そうすれば、ブック云々に関わらず
ハイパーリンクは外れないと思います。

外していたら、すみません。
» 4
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:あんぐり 投稿日:2006/03/28(Tue) 14:44
ビンゴです。
しかし、先方と絶対パスを合わせるのは至難の業です(涙)
先方も海外事業部などで作業していたりして、特定の場所で作っていないのが現状です。
フォルダの名前も、途中で変わって戻ってきたり(先方で途中修正を行うことがあるため)するので、厳しいです。

ただ、自社内で作業する分については解決できそうです。
ありがとうございました。
» 5
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:流星 投稿日:2006/03/28(Tue) 22:19
引き続き検証していたので
結果を報告させて頂きます。

昨日書き込んだ状況のように
ハイパーリンクをわざと外します。
例)c:\test\hogehoge.indb → c:\test2\hogehoge.indb

次に、もともと作ってあったブック
(hogehoge.indb)を開きます。
開いたら、ブック内のドキュメントを
全て開きます。パレット右側に、
本のアイコンが出ます。
ハイパーリンクを設定したドキュメントを
アクティブにして、パレットオプションから
「ハイパーリンクを更新」を実行します。
※開いていないと警告されます。

当方の環境では、この手順で
正しく、再設定できました。

この方法なら、外部からのデータも
完全にコントロール出来そうですが、
如何でしょうか?

昨日の時点で、ここまで検証していなくてすみません。_( _ _ )_
普段使わない機能でしたので、あやふやでした。
» 6
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:あんぐり 投稿日:2006/03/29(Wed) 10:25
検証ありがとうございます。

こちらで試してみたところ、「ハイパーリンクを更新」がグレーアウトされていて実行できません。
実は今回の件で、「ハイパーリンクを更新」を実行しようとしたことはあるのですが、アクティブにならず使用できなかった経緯があります。
やり方が間違っているのでしょうか?
(CSでもやってみましたが、グレーアウトしています。)
» 7
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:流星 投稿日:2006/03/29(Wed) 21:53
やり方としては
1つ目のドキュメント(001.indd)に
新規ハイパーリンク先で
種類「ページ」
名前「テスト」
ページ「1」
ズーム設定「固定」
上記のように作ります。
2つ目のドキュメント(002.indd)にて
対象テキストを選択し、「インタラクティブ」
「新規ハイパーリンク」とします。
「新規ハイパーリンク」ウインドウにて
ドキュメント「001.indd」
形式「ページ」
名前「テスト」※001.inddで作った設定をコンボで選びます。

上記のように私は作成しました。
ここまでの手順は同じですか?

この状態になったらブックを作ります。
そして、パッケージ化します。
リンクが切れるというのはこれまでの
カキコで明らかになったので、割愛します。

そして、リンクを絶対パスを変更し切ります。
例)c:\test\hogehoge.indb → c:\test2\hogehoge.indb

ブック(hogehoge.indb)を開きます。
ブックパレット上で全てのファイルを
ダブルクリックにて開きます。
※右側に本のアイコンが表示されます。

開いたら、ハイパーリンク先ではなく
実際にハイパーリンクパレットに項目のある
ドキュメントをアクティブにします。
※今回の例では002.inddというファイルです。

ハイパーリンクパレットの右三角のオプション
ボタンを押して「ハイパーリンクを更新」とします。
ここで、ハイパーリンク先(001.indd)
が開かれていないと警告されます。

私の検証手順を長々と書きましたが、
手順が違ったり、グレーアウトして
対処できなかったりしたら、
また、カキコんでください。

上記の検証を行った環境は
WINXP・InDesignCS1(CS2互換Update)
です。
» 8
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:あんぐり 投稿日:2006/03/29(Wed) 22:21
詳細な検証報告ありがとうございます。

現在、頭がまわっていないこと、作業に追われていることから、まだ今回のレスに対しての検証は行っておりません。
とりあえず、こちらでは最初にブックを作っており、ハイパーリンクを設定した後にブックを作っていないという違いがあります。

明日、作業が落ち着いたら流星さんと同様の検証をしてみます。
また結果を報告させていただきます。
» 9
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:あんぐり 投稿日:2006/03/30(Thu) 09:44
頭がすっきりした状態でレスを拝見したところ、
流星さんのやり方と、こちらのやり方で決定的に違う箇所を見つけました。

こちらでは「新規ハイパーリンク先」は設定せず、「新規ハイパーリンク」でリンク先のページを設定する方法をとっております。

検証したところ、「新規ハイパーリンク先」をあらかじめ設定した方法だと、パッケージをしてもフォルダ名を変えてもリンクは外れませんでした。
また「ハイパーリンクを更新」もアクティブになります。
しかし、こちらでのハイパーリンクの付け方(ハイパーリンク先設定なし)だと、フォルダ名を変えるとリンクが外れ、「ハイパーリンクを更新」もグレーアウトしています。

こうなるとハイパーリンクの付け方が悪いとなってくるのでしょうが、あらかじめハイパーリンク先を設定する方法が取れるほど、リンク数が少なくないのです。
他に手はないものでしょうか?
» 10
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:流星 投稿日:2006/03/30(Thu) 18:33
>こうなるとハイパーリンクの付け方が悪いとなってくるのでしょうが、あらかじめハイパーリンク先を設定する方法が取れるほど、リンク数が少なくないのです。
>他に手はないものでしょうか?
ハイパーリンク先を設定しなければ、
出来ないと思いこんでいました。orz

引き続き、検証結果を報告します。
前回のように、ハイパーリンクの設定が
終わったブックのリンクを絶対パスを変更し
切ります。
例)c:\test\hogehoge.indb → c:\test2\hogehoge.indb

ここまでは、前回と同じです。
※ブック上で全て開いておいて、ハイパーリンク設定の
されているドキュメント(002.indd)をアクティブにしてください。
前回は、ここで「ハイパーリンクを更新」でしたが、
ハイパーリンクパレットの下部の4つのアイコンの
左から2番目の「ハイパーリンク先へ」を押します。
そうすると、無事にターゲットの部分へ飛べると思います。

また、違ったら報告ください。
CS1では上記の動作をしました。
» 11
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:あんぐり 投稿日:2006/03/31(Fri) 09:39
何度も検証ありがとうございます。

流星さんのおっしゃるように、「ハイパーリンク先へ」をすることで、そのリンクは正常に機能するようになりました。
が、他のハイパーリンクはリンク切れたままですね。
1つ1つ「ハイパーリンク先へ」をしていけば直るのでしょうけど、結局一括作業は無理なのでしょうか。。。

ちなみに、こちらで今回対応した苦肉の策は、ハイパーリンクパレットから、ひとつひとつダブルクリックして設定し直すという作業でした。
切れたハイパーリンクが数百点ありましたので、再設定~確認で大変でした。
» 12
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:流星 投稿日:2006/03/31(Fri) 21:13
スクリプトにて自動化を試みてみました。
CS1で動作確認しました。

※使い方:
ハイパーリンクが切れたままのブックを開いて実行して下さい。
'-------------------------------------------------------------
Set MyInDesign = CreateObject("InDesign.Application.CS")
With MyInDesign 'Withコーディングにて速度向上
 If .Books.Count <> 0 Then '開いているBookの数が0でなければ…
 For B = 1 To .Books.Count '開いているBookの数だけループ(念の為)
  For BC = 1 To .Books(B).BookContents.Count 'Book内のDocument数ループ
  Set BBB = .Open(.Books(B).BookContents(BC).FullName) 'Book内のDocumentを開く
   For I = 1 To BBB.Hyperlinks.Count '上で開いたドキュメント内のハイパーリンク数だけループ
   BBB.Hyperlinks(I).ShowDestination '「ハイパーリンク先へ」機能でリンクを復元
   Next
  Next
 Next
 End If
End With
Set BBB = Nothing
Set MyInDesign = Nothing
'-------------------------------------------------------------
» 13
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:あんぐり 投稿日:2006/04/03(Mon) 11:15
スクリプトまで作っていただけるとは感激です。

…が、実行方法が分かりません。
拡張子をjs、vbsで試してみましたが、どちらでもエラーが出ます。
拡張子が間違っているのか、使用方法が間違っているのか、、、

vbsだと、「文字が正しくありません」
jsだと、根本的に違うような。。。
馬鹿でスイマセン。
» 14
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:三島梅花藻 投稿日:2006/04/03(Mon) 13:29
流星さんのappleスクリプトをJavaスクリプトに書き換えてみました。
with (app){
if (books.length != 0){
for (var b = 0;b < books.length;b++){
for (var bc = 0;bc < books[b].bookContents.length;bc++){
bbb = open(books[b].bookContents[bc].fullName);
for (var i=0;i < bbb.hyperlinks.length;i++){
bbb.hyperlinks[i].showDestination();
}
}
}
}
}

ただ、私はまだハイパーリンクやパッケージ機能等弄った事がありませんでして、しっかり動作確認できていません。
(showDestinationだとエラーが出てしまい、showSourceだとエラーはでないのですが、検証条件がしっかりわかっていませんので…)
» 15
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:あんぐり 投稿日:2006/04/03(Mon) 14:54
三島梅花藻さん、ありがとうございます。
動作できました!

動作させてみてびっくり。
あれだけ苦戦した作業が、一瞬で終わっちゃいました。
流星さん完璧です。すばらしいです。
(CS2でも動作できました。)

これで、今後同じ作業があっても効率よく進められます。
本当にありがとうございました。
» 16
[8600へのレス]Re: パッケージ後のハイパーリンクについて 投稿者:流星 投稿日:2006/04/03(Mon) 21:48
大事な所を書き忘れていましたね。
VBSでした。
なぜ動かないのかは、不明ですが…

三島梅花藻さん>
フォローありがとうございました orz
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア