メイン

2006年12月26日

レイヤー別に保存・書出し」の修正です。

素晴らしいIllutrator用スクリプトでおなじみの s.h's pageのs.hさんから、WinXP+CSでの不具合のご報告をいただきました。PDF書き出しの際にエラーが出るというものです。
元ファイルに空レイヤーが含まれているときの処理にバグが見つかりましたので、修正したものをとりあえずアップします。
まだ原因のわからないエラーメッセージがあるんですが、これはまだ調べている途中です。多分、ファイルにロックされたレイヤーがあるときに出るエラーなのではないかと思うんですが……

引き続き、動作確認のご報告をお待ちしています。メッセージフォームか、コメント欄へお願いします。
…と言いながら、コメント欄への書き込みは、相変わらずエラー画面で終わるままになっております(書き込みはできます)。ご迷惑をおかけしています。すみません。

トラックバック

コメント

投稿者 s.h : 2006年12月28日 22:04

こんばんは。
以下のように変更させて頂いたところ、PDF 保存のエラーは出なくなった、と思われます。

127、131、132、154行目をコメントアウト
152行目を変更: open(oPath); }
155行目を変更: open(oPath);

ただ変更前に、レイヤーのロックの部分でエラーが出ていた理由はよくわかりません。
参考になるかわかりませんが、エラーが出ていた .ai ファイルを以下に置いておきます。
レイヤーは全て !locked, visible です。
http://www.ne.jp/asahi/life/cycle/misc/061228myfile.zip

投稿者 s.h : 2006年12月30日 09:41

追記。訂正です。
127、131、132、154、155行目をコメントアウト
152行目を変更: open(oPath); }
でした。

投稿者 倉田タカシ : 2006年12月31日 01:10

ありがとうございます! Fileオブジェクトを作らなくても開けることに気づいていませんでした。
最初にファイルを閉じないことも含めて、教えていただいたやり方のほうがスマートですね。
動作を確認できましたので、ファイルをアップしました。お返事が遅くなってすみません。

上げていただいたファイルは、改行のみのテキストが一つある以外はパスだけの、特になにも変わったところのないファイルですね。こちらのCS2+WinXPでも問題なく処理できました。とりあえずはこれでよしという感じでしょうか。

年末の忙しいときに時間を割いていただいて、本当に助かりました。どうぞよいお年を。

投稿者 s.h : 2006年12月31日 09:51

こんにちは。(…恐縮です;;;>素晴らしい云々)
こちらこそ慌しい時期に面倒を持ち込んで済みませんでした。
名前が紛らわしいのですが、Document.fullName は、
それ自体 File オブジェクトなんです。
alert(activeDocument.fullName);
alert(decodeURI(activeDocument.fullName).replace(/file/,"doc"));
とか、文字列みたいに扱えてしまうので、実は私も今まで勘違いをしていました。
文字列としてのパスを得るなら Document.fullName.fsName のほうが良さそうなので、
さっき自分で UP してる書き出しスクリプトを手直ししたところです。
ともあれスッキリ解消して年越しできて良かったです。よいお年をお迎えください。

投稿者 倉田タカシ : 2006年12月31日 13:09

えっ! と思ってリファレンスを確認してみたら、Document.fullNameは、
CSとCS2ではたしかにFile Objectなのに、バージョン10ではStringと書かれていました。

しかし説明文はCS以降とおんなじで、

 The file associated with the document, which includes the complete path to the file.


alert( activeDocument.fullName instanceof File ) → true
alert( activeDocument.fullName instanceof String ) → false

以上のとおり、試して見るとバージョン10でも実際にはFileのようでした。
ずっとStringだと思いこんでいました。 やられた……!

ともあれ、スッキリと新年を迎えられそうです。
ありがとうございました。