テクニカルノート:Windows で出力結果が白紙になる

更新日: 2002/12/18
製品: PrintOMatic Xtra 1.6.5 , PrintOMatic Lite Xtra 1.6.5
プラットフォーム: Windows 95, Windows NT 4.0, Windows Me, Windows 98, Windows 2000, Windows XP

Windows 版の PrintOMatic や PrintOMatic Lite の出力結果が白紙だったり文字化けするときは、ほとんどの場合2つの要因によります:16bit の色深度と旧バージョンのプリンタドライバや設計の悪いプリンタドライバの組み合わせです。とりわけ Hewlett Packard や Lexmark のプリンタに見受けられます。この問題は 16bit 以外にも 32bit に設定したシステムで起こることもあります。また小さなイメージよりも大きなイメージのほうが顕著です。

リンクされたキャストメンバーに問題がある場合は、テクニカルノート「リンクしたキャストメンバーが印刷されない」を参照してください。

PrintOMatic でトゥルーカラーのイメージやスクリーンショットを印刷する際に起こるほとんどすべての問題は、旧式だったり欠陥のあるプリンタドライバに帰因します。特に HP や Lexmark が白黒プリンタ用に配布しているドライバです。

別のアプリケーションで印刷できるからと言って、ドライバに問題がないわけではありません。問題の一環として、実際に 16bit のデータをプリンタに送っているアプリケーションがほとんどないことが挙げられます。たとえば Photoshop はソースの色深度に関わらず常に 24bit のデータをプリンタに送っています。

白紙で出力される問題のほとんどは Hewlett Packard か Lexmark のプリンタドライバを使って HP か Lexmark の白黒プリンタで印刷したときに起こります。これらはカラーサポートの実装がまったく不十分で、業界でもっともひどいプリンタドライバだということが分かってきました。カラー印刷に欠陥があって PrintOMatic のページが空白になってしまうようなドライバを作っているのは事実上 HP と Lexmark だけです。

ステージを印刷する場合は小さな断片に分けて印刷することで結果を改善することができます。詳しくはテクニカルノート「Windows で出力結果が白紙になる問題の対処」をご覧ください。

問題の背景

PrintOMatic は実際のソースの色深度でプリンタにデータを渡す数少ないプログラムの一つですが、Windows 95 や NT を使用しているユーザには色深度がたまたま 16bit になっている人が多くいます。

ちょっとした歴史に触れましょう。Windows 3.1 以前は DIB データ(Windows がビットマップイメージを扱うための内部フォーマット)に対する「合法な」色深度は 1、4、8、24 だけでした。このフォーマットは厳格且つとてもシンプルでした。Microsoft が Windows NT と 95 のコードを書いたとき DIB フォーマットが拡張されました。いくつもの新しい色深度(16bit もそのうちの一つ)を持てるようになり、またトゥルーカラーのイメージをうまく扱うためのいくつもの機能追加がありました。

プリンタドライバの開発者たちは Windows 3.1 用のドライバを Windows 95 と NT で動くようにアップデートしましたが、そのとき多くの開発者は新しいオペレーティングシステムがサポートしている拡張された DIB フォーマットについて忘れていました。忘れていない者もいましたが、ただお粗末な 16bit サポートを実装しただけでした。(ビデオドライバの開発者たちはこの件に関してはるかに優れていました。)オペレーティングシステムがついに 16bit カラーをフルサポートしたにも関わらず、出てきたものは 16bit のイメージデータをサポートしていなかったり、サポートしていたとしても全く不十分なプリンタドライバでした。

ここ数年のうちに、おおよそのドライバ開発者たちはようやく 16bit イメージをサポートするラインに踏み込みました。その結果 PrintOMatic からトゥルーカラーのイメージを印刷する際に起こった「白紙ページ」バグの多くは、最新バージョンのドライバを手に入れることで解決しました。

それでも多くの HP のプリンタドライバ、特に白黒プリンタ用のドライバは上で述べたようなカラー印刷の欠陥を未だに含んでいます。

またこういったドライバのメモリ管理ルーチンの中には別な問題が潜んでいます。これらのドライバの多くは 16bit イメージのサイズが小さいときに限って印刷することができます。イメージが大きくなったり印刷解像度が高くなると印刷に失敗します。これは使用しているコンピュータがどれだけメモリを積んでいるかに関わらず起こることです。

推奨する解決策

1. HP のウェブサイト でプリンタドライバを最新バージョンにアップデートしてください。
 
2. スクリーンの色深度を 8bit (最も安定しています)または 24、32bit に手動で切り替えてください。
 
3. the colorDepth を使ってスクリーンの色深度を調べてください。the colorDepth = 16 の場合は、ユーザにアラートを表示し DisplayRes Xtra のような Xtra を使ってオン・ザ・フライで色深度を変更してください。(DisplayRes Xtra の使い方まで説明するとこのテクニカルノートの範疇を超えてしまいます。)
 
4. ステージを印刷しようとしているときはステージを分割して印刷してみてください。テクニカルノート「Windows で出力結果が白紙になる問題の対処」のコードを試してください。