M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2004年9月10日 00:00

Illustrator CS:むりくり開く!バイナリエンコーディングEPSを配置したがために開けなくなったIllustrator CS EPSをスクリプトで、当然無保証。

このエントリーをはてなブックマークに追加 mixiチェック

IllustratorアイコンIllustrator CS には、Photoshop のバイナリエンコーディング EPS を配置して、EPS 保存すると、次回その EPS ファイルを Illustrator CS で開こうとすると、開けなくなる、という不具合が確認されています。(参考

この問題は、Adobe Forums で議論されていましたが(現在はトピックがなくなっている)、その中で、ある方の解析により、どうやら冗長なデータをつければ読み出せるようになるということが分かりました。

それを受けて、解決するためのスクリプトを作りましたので、この問題に興味のある方はご覧ください。

動作環境は、Linux の Perl です。無保証、無保証。

ファイル名: unlock.pl

#!/usr/bin/perl

while(<>){
if (/(.*)%%EndBinary(.*)/) {
print $1;
for ($i=0; $i < 65535*2; $i++){
print "\000";
}
print "%%EndBinary";
print $2;
last;
next;
}
print;
}

え? バイナリデータをテキストとして扱うな? 衛生管理者として従事している僕に無茶いわないでください


(2004.9.10 13.22追記)

まず、僕のプログラム修正。<del>last;</del><ins>next;</ins>

次に、コメントでこの問題について書かれていた、Gromitさんから、問題のデータをいただけましたので、公開いたします。この問題の検証以外では使用しないでください。

(2004.9.11 7.10追記)
上記検証用データの補足説明

データは、Windows版IllustratorCS 11.0.0で作成しています。
【ファイル名】
 CS_PS4-GBM8.eps
 CS_PS6B-GVenus.eps
それぞれ、単純にPhotoshopEPS(Binary)をリンクしただけの書類です。
(その他のパスオブジェクト・テキストオブジェクトはありません)
リンク画像は保存時に「含んで保存」していますので、
リンク元の画像ファイルは添付していません。
(無事に開く事ができれば「抽出」できるはずです)
圧縮には「MacLHA 2.24」を使用し、Mac用として保存しています。

(2004.10.27 19.18追記)

おうち使い用に作り直してみた .pl を
市川せうぞーさんのBBSにup済 (2004/10/23)。
こんどのはWinでも動くはずです。

とのことで、当方のスクリプトではなくて、MM岩手さん作のスクリプトをご使用くださいませ。

投稿 大野 義貴 [Script] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/344

コメント(10)

> ある方の解析により、どうやら冗長なデータをつければ読み出せるようになるということが分かりました。

? いなかったと思います。
一番近い事は、当日CLさんがここのblogで言ってたね。

たしか「64KBづつの読み込みに×なので〜」というめちゃ詳しい方の発言を受けて、
ron.様が「なぜにシーケンシャルや」って高度なことを言ったので、
「きわめて悪質な×だな」って訳してみた気がする、かも。
×の正体がはっきりしてないけど、あの時点ではかならずしも64KB足せばいいってもんじゃなかったと思う。
でも、私のとこのケースでは、CLさんのスクリプト(改)で開けました(last;のとこ変では?)。

ほんと、64KB足せばいいって問題だったらいいね。

ファイル名: unlock_osx.pl
Mac改行EPS用。EUC-JP、LF。当然無保証。

から〜

#!/usr/bin/perl -w
use File::Basename;
$/ = pack("C", hex("D"));
foreach $i (@ARGV) {
($base, $dir, $ext) = fileparse($i, '¥.[^¥.]+$');
$newpath = $dir . 'W_' . $base . $ext;
open(IN, "$i") || die "can't open $i ¥n";
open(OUT, ">$newpath")|| die "can't open $newpath ¥n";
while(<IN>){
if (/(.*)%%EndBinary(.*)/) {
print OUT $1;
for ($i=0; $i < 65535*2; $i++){
print OUT "¥000";
}
print OUT "%%EndBinary";
print OUT $2;
next;
}
print OUT;
}
close(IN);
close(OUT);
}

〜まで

#やべ、もうこんな時間。

・・・化けてますね。

while( <IN> ){  #全角で打ってみた。

トホホ。他にもあるかも。

はじめまして、
例のトピックで長々と書いた挙句に削除されてしまった者です。
64KBのテキストデータをEPSのバイナリデータの後ろに足してやればホストドキュメントのイラストレータファイルをAICSで開けるようになります。この問題は実はIllustrator 10でも起こりうるのですが、AI10の読み込み用のバッファがAI11に比べて小さいため、発生頻度はかなり低くなります。AI11でも特定のEPSを使って特定の条件下でなければ起こらないのですが。

64KBのパディングで開けることは間違いないのですが、そのファイルを印刷できるかどうかは別の話です。バイナリEPSをリンクしたイラストレータファイルを印刷できるかどうかはドライバ、システム、ネットワーク、プリンタの設定次第で、イラストレータ側からは制御不能な部分があるので、製品としてはバイナリEPSを正式にサポートできない、ということになったのですが、そこのところをご理解していただけない方が少なくないようです。特にこの「オープンできなくなる」問題と混同されている方もいらっしゃるかと。

Kさんは悪くないでしよ。そんなに深刻になられると辛いです(^^;)。

とりあえず、むりくりでも再度開ければ画像データの訂正するとかの方法がとれると思って、そのお手伝いツールを作ってるだけですから。
# 私たち、データ作成する側のお助けも大事な仕事なので (^^)。

やったねCLさんの発案当たりじゃん。
# せうぞー先生にちゃんと書き直してもらわなきゃな。
# で、どこ置く?

MM 岩手さん:

でも、私のとこのケースでは、CLさんのスクリプト(改)で開けました(last;のとこ変では?)。

next; の間違いです。訂正しました。あと、ここだけのはなし、128KB くっつけています。
・・・化けてますね。

while( <IN> ){  #全角で打ってみた。

コメント欄、HTML タグがイキに指定しているので、<IN> だと、タグと認識されちゃいます。それじゃあ、ってんで、<xmp> 要素でくくるというのは、実は XHTML あたりではダメなので、<pre> 要素でくくり、不等号は&lt; 、&gt;で記述する必要があるのでした。

K さん:

64KBのパディングで開けることは間違いないのですが、そのファイルを印刷できるかどうかは別の話です。バイナリEPSをリンクしたイラストレータファイルを印刷できるかどうかはドライバ、システム、ネットワーク、プリンタの設定次第で、イラストレータ側からは制御不能な部分があるので、製品としてはバイナリEPSを正式にサポートできない、ということになったのですが、そこのところをご理解していただけない方が少なくないようです。特にこの「オープンできなくなる」問題と混同されている方もいらっしゃるかと。

Mac OS X の 10.1 等の、OS の プリントシステムにてバイナリエンコーディング eps が通らない系があるので、eps としての可搬性を高めるため、Adobe としては、ASCII エンコーディングを推奨しているという風な解釈をしています。Photoshop CS のデフォルトエンコーディングが ASCII85 になっていることもあわせて、確かに混乱しているような雰囲気はあります。

実運用では、バイナリエンコーディングでも問題ない系も多いのですから、従来の バイナリエンコーディング eps を普通に利用できるようにしてほしいものです。

MM 岩手さん:

# で、どこ置く?

どこに置くっていう以前に、問題提起が充分になされていないんですよ。

昔なら、2ちゃんねるに投げてみたところですけれども、追い出された身ですし。

というわけで、mixi [mixi.jp] の Illustrator コミュニティに入って、トピックを建ててきました。

>この問題は実はIllustrator 10でも起こりうるのですが

ってところが萎えた。ぐへ。
私はこのエラーには出会ったことがありませんが。(社内のイントラネットに書き込むと無用の不安を煽るので止めよう>ワシ)

それよかIllustrator10でBiblos使ったときにPDF書き出しできるようにしてほし~です。>Adobeさん。

なにげに気がついてしまった (・・;; しまった。

CL様へ:
私が悪かったです。謝ります。すみません。このとおりです。
お願いです。どうか、うちのにも「 next; 」付けてください。。。

# どうせ開くとき読み飛ばされるだろうけども・。

お願いです。どうか、うちのにも「 next; 」付けてください。。。
コッソリ直しておきました。

# ネタもとからもリンク

おうち使い用に作り直してみた .pl を
市川せうぞーさんのBBSにup済 (2004/10/23)。
こんどのはWinでも動くはずです。
あくまで、Adobeさんの理解が得られるまでの緊急回避用として。。

コメントする