はじめに…

 私がDTPという新天地へ辿り着き、まず最初に遭遇した苦境がPostScriptというスクリプトによるトラブルでした。
 電算写植ではデファクトスタンダードであったSAPCOLというスクリプトとは程遠い複雑怪奇な異国のスクリプト。しかもMacintoshは、うまくその存在を隠しているのです。

 SAPCOLの場合は、出力前に組処理という出力機(RIP)側に理解できるように変換処理を行います。この処理は、スクリプト記述が正しくない場合でも、“エラー後のエラー処理”が『神業的』であったので、原因不明によるエラーによって発生する『処理の停止』などは、皆無(SAPCOLによる“ページ組指令”の場合の間違いは、稀に処理の停止は発生しましたが、これも“ページ組指令”の間違いであることは、停止したことにより分かりますので原因追求は楽でした)でした。たとえ、記述を間違えていたとしても、エラー処理後、1ページを100ページと認識してしまう場合もありますが、出力だけは行ってくれました。

 出力を行ってくれることにより、何処で記述を誤ったかという確認作業を行えるのです。しかし、写研の出力機の場合は『普通であった神業的なエラー処理』は、鎖国された国の常識でした。

 PostScriptの世界では、スクリプトを意識しないで、レイアウト作業を行えるという仕様が邪魔をし、DTPの最大の『ウリ』である部分が、同時に『厄介な悪魔』となっていたのです。しかし、これは当時のLevel1の仕様の未熟さによるものが大きな原因でした。

 PostScript Level2(2バイト仕様)になり、さらにソフトウエア開発会社がPostScriptの仕様の理解を深め始めると、エラーが激減。現在では、PostScriptという『裏方』を意識する環境ではなくなったように思います。しかし、意識することがなくなった分、『樹海の奥に置きさられ、忘れ去られようとしているPostScript』とも言えるでしょう。

…そして、PostScriptについて語ることは少なくはなさそうです。

出力できない原因

 まず始めに、出力ができない場合の原因と対処方法を、ここに紹介したいと思います。
 ここに書かれていることは、PostScriptがLevel1時代の対処方法です。

 1999年現在、PostScriptエラーで悩んでいる方が存在するとします。もしかすると、データ作成時に現在のLevel2又は、PostScript3の仕様に甘え、エラーが発生していることも考えられます。ですから、Level1時代に発生したPostScriptエラーの原因を知ることにより、対処方法を見つけることができるかもしれません。

 エラー発生が減少したので、PostScriptエラーの原因を知るということは、あまり機会が無いことでしょう。

●システムハング又は、システムエラー

・その零

 まず、システムエラーが発生するMacintoshがウイルスに感染していないかをチェックする。次に、アプリケーションに割り当てているメモリ領域が少ないのかもしれないので、『情報を見る』→『メモリ』よりアプリケーションメモリの割り当てを増やしてみる。

・その壱

 ある程度、環境に恵まれているのであれば、3台以上のMacintoshで出力を試す。全てのMacintoshで同じ症状が出たら出力を行おうとしている『ファイル』に原因があるかもしれない。
 次に、出力を行おうとしているファイル以外のファイルを出力してみること。これが出力できたら、上記のファイルが破損しているか、貼り込まれている部品が破損している可能性が大きい。
 最初に行うべき対処方法であるが、『ファイル』の内容(テキスト・オブジェクト)を新規ファイル上にコピー&ペーストを行い保存し、出力を試みてほしい。

・その弐

 Macintoshが1台しか存在しない環境であれば、以下の作業を行うことになる。
 しかし、その前に出力を行おうとしているアプリケーションが、MacintoshのOSに対応しているかを確かめてみてほしい。

  1. 機能拡張・コントロールパネル類をシステムとアプリケーションが要求する最低限度まで外す。
  2. アプリケーションを一度終了し、アプリケーションが作成する『初期設定ファイル』をディスクトップの上へ持ってくるか、名前を変更し、アプリケーションを再起動する。
    『初期設定ファイル』が異常でない場合は、『初期設定フォルダ』へ再び戻すので削除をしてはならない。
  3. システムが使用しているフォントと、出力を行おうとしているファイル内で使用しているフォントのみを残し、出力を行ってみる。それでも不可能である場合、そのフォントが破損している可能性があるので、新しいフォントをインストールし出力を行ってみる。フォントが破損しているとシステムエラーに遭遇することがある。
  4. 複数のプリンタドライバをインストールしているのであれば、プリンタドライバを変更する。
  5. プリンタドライバを1つしかインストールしていない場合は、プリンタドライバを再インストールする。
  6. アプリケーションを再インストールする。
  7. システム全体を再インストールする。

 それでもシステムハング・システムエラーが発生する場合は、ファイルか貼り込まれている部品類が破損している可能性が非常に大きい。

●エラーコードが表示される

 -8133というエラーコードはPostScriptエラーが発生した時に表示される。
 -8133以外のエラーコードが表示される場合は、プリンタを立ち上げ直す等、PostScriptエラー以外の原因で発生しているので、ここでは取り上げない。

    %%[Error:××;OffendingCommand:△△]%%

    ××=PostScriptエラー名
    △△=RIP実行コンマド

 エラー時には、このエラーコードは重要である。エラーが発生したら、よく見ていてほしい。

1.[limitcheck]

 『ドキュメントが複雑すぎる』ので出力不可能であるという意味である。パスが複雑であると発生しやすい。RIPの処理できる上限を超えた時に発生する。

     Illustratorの場合は、グループ化は解除したほうがいい、グループ化はグループ全体を一つの複雑なパスとして認識するからである。又、パスのアンカーポイントを削除してみるのも効果がある。Level1のポイント数の上限は1500ポイントであるからである。

     limitcheckはRIPの上限を超えてしまった場合に発生するエラーであるので、Level1の場合は、アンカーポイントの制限数に影響しやすい。複合パスなどアンカーポイントの数に影響しそうな作業は、気を使いながら行うべきである。
    しかし、このエラーは、Level2以降のRIPでは、あまり見ることが無くなった。
     Level2ではメモリ管理が柔軟になったことにより、ポイント数の上限が1500ポイント固定ではなく、実装メモリにより上限を伸長することが可能になったことが理由である。しかし、発生する可能性はある。メモリが不足したことにより、上限を超えてしまう場合である。

2.[VMerror]

 RIPに実装されているメモリを使い切った時に発生する。Level1RIPの場合は、メモリ管理が貧弱であるので、発生しやすい。

     Photoshopにて、切り抜きを行い、そのパスに対してクリッピングパス指定を行うが、この時に『平滑度』を設定する。この数値があまり小さいとVMerrorが発生しやすくなる。
     PostScriptの場合、パスの曲線部分は、RIP時に直線の集まりに変換するのであるが、その時にこの平滑度の数値を見る。

 平滑度=プリンタの解像度/出力解像度 という式にて計算される。

     例えば、平滑度を1と設定した場合、『プリンタの解像度=出力解像度』ということになる。プリンタの解像度が2400dpiであった場合、RIPは、1インチ2400分割されたメッシュが曲線を直線に変換する際の最小単位として計算する。RIPは、2400分割された点と点にパスのアンカーポイントを打ち込む作業を行う。結果、無意味な(高精度すぎる)分割作業により、膨大なパス数を作成しRIPに大きな負担をかけることになる。特にLevel1RIPの場合は、メモリー管理が不十分である仕様なので、エラーを出さずにはいられない結果となる。

 平滑度を5とした場合、2400dpiのRIPにて出力を行ったとしよう。

    出力解像度=2400/5
         =480(dpi)

     RIPは1インチ480メッシュで曲線を直線に変換する作業を行うということになる。平滑度1と比べると極端に少ないメッシュ数であることに注目してほしい。

3.[dictfull]

 Level2以降のRIPでは発生しない。

・その壱

    %%[Error:××;OffendingCommand:definefont]%%

     このエラーの場合は、Level1RIPの特徴であるのだが、書体を扱う辞書(dict)が11書体程度しか扱えないことによって発生する。1ページ内に使用する書体数を減らすことによって回避できる。

・その弐

     以前のフォントワークス書体では、書体インストール時に『Use/Start』というプリンタ内の書類に登録できるようになっている。この登録により、フォントのプリント速度が上がるので便利なのであるが、『Use/Start』へ登録を行うと、1ページ内にそのフォントが存在しなくても、存在しているとRIPが認識してしまう。よって、7書体しか使用されていないページであっても12書体使用しているとRIPが判断してしまうので、エラーが発生することになる。この設定は、エラーが発生する原因となるので、トラブルを第一に考えると、『Use/Start』登録は削除しておく方がいいということになる。

4.[stackoverflow]

 stackが溢れるという意味である。stackとは、PostScriptが使用する一時的な作業場である。何かの原因でこの作業場に許容以上データを入れようとすると、エラーとなる。
 この数値は、Level1では500以上。Level2ではPostScript言語にてユーザーによる変更が可能である。通常はエラーが発生しない程度のデフォルト値が設定されている。

 このエラーは通常は発生しないはずであるが、以下のような2つの原因により発生することがある。

  1. アプリケーションのバグ。
  2. Macintoshとアプリケーション、プリンタドライバなどの相性によって、PostScript言語への書き出しが不安定になって発生する。

1の場合

     アプリケーションがバージョンアップされるのを待つか。それが無理であれば、他のアプリケーションを使用してデータを作成する方法が考えられる。

2の場合

     PostScript言語の書き出し方法を変更することによって、エラーを回避できることもある。
     例えば、LaserWriterのバージョンの変更、PSプリンタドライバ自体の変更(Adobe純正への変更)又、直接プリンタへ出力するのではなく、PSファイルを作成し、そのPSファイルをLaserWriter Utility、DropPS等の他のユーティリティでプリンタへ送ってみる。この方法をとるとエラーを回避できることもある。

●データ破損箇所を探す方法

 システムハングの場合は不可能かもしれないが、システムエラーでアプリケーションが終了してしまう症状が発生した場合は、以下の方法を試せば破損している箇所を探すことが可能である。しかし、システムエラーが発生したら、再起動を行って次の作業をくり返すという少々骨の折れる作業になるので覚悟してほしい。次に説明する作業は、“●システムハング又は、システムエラー『・その弐』”は全て完了していることが前提である。

1具体的な方法

 まず、ドキュメントを半分づつ削除する。例えば、10ページのQuarkXPressのドキュメントであれば、5ページ以上のページは削除する(もちろんバックアップを取っておき、コピーしたファイルを使用すること)、そして出力を試みる。この作業をくり返してみる。最終的には、1ページドキュメント内の半分を削除し出力、その半分を削除し出力…というくり返しになる。出力された場合、直前に削除したオブジェクト(…に貼り込まれている部品)或いはテキストボックスが壊れていたのが原因で出力されなかったということになる。

 時間に余裕があるのであれば、このような方法は有用かもしれないが、普通は時間に余裕などないはずである。そのような場合は『出力を行う』という思考から一歩離れ、データ支給であれば、『同じデータのバックアップが存在するか?』という思考へ動くべきである。『プロフェショナルは、所定時間内で出力を完了するのが仕事』ということを忘れないでほしい。(デザイナーの方であれば、修正前のデータを流用し最低限の時間で同じデータを作るという思考へ動くということになる。)

2最後に…

 最新のRIPの場合、スプーラ等の余計な機能が邪魔をし、原因を追求する場合に役に立たないことがある。
 出力が不可能で、ファイルの何処が悪いかをチェックしたい場合、単純なRIPを使用した方が原因を追求しやすい。例えば、スプーラ付きのRIPが付属しているカラープリンタよりも、スプーラなど付いていない単純なモノクロプリンタのRIPの方がエラー時にエラーが発生する直前までラスタライズされた出力物を出力してくれる(OKI MICROLINE 803PS2にて確認)。
 逆にスプーラ付きのRIPの場合、スプーラ内にスプールされたデータは、データが異常であった場合、印刷まで行うことはなく、不良データは弾かれてしまう。プリンタドライバでエラー状態を知られてほしいという設定を行っても、弾かれる。

(990814)


Copyrignt (c) 1999 - 2000 NOBUO KONDOU, All rights reserved.