Bitmap レンダリングプラグイン

皆様、お久しぶりです!

 

WDK サポートチームのI沢(アイザワ)でございます。

2014 年ももうすぐ終わろうとしておりますが、皆様いかがお過ごしでしょうか。

 

年末と言えば年賀状。年賀状と言えばプリンタ。プリンタと言えばドライバですね!

今回は、そんなプリンタドライバに関するお話でございます。

 

以前、A 尾さんのエントリ 「プリンタ ドライバ、スプーラ コンポーネントの WDK サンプル」 にて "bitmap レンダリングプラグイン" をご紹介されておりましたが、なんとこちらのプラグインを使用することでプリンタが無くても、印刷結果を紙の代わりに画像ファイルとして出力することができます!

本プラグインは UNIDRV のプラグインとなっておりますので、開発している UNIDRV のプラグインの参考として利用できます。

また、印刷結果が意図しない結果となった場合などに、自身が作成したドライバーに依存した問題か、それとも他のドライバーでも現象が再現するものかなど、原因の切り分けにも活用できるので、私共も非常によく使用するサンプルでございます。

 

今回はそんな便利なプラグインのビルド方法から、印刷結果を確認するところまでご案内いたしますのでお付き合いいただけますと幸いです。

 

 

サンプルのビルド

まずはサンプルのダウンロードからビルドまで手順をご説明いたします。

ビルドはインストール先のターゲットマシンを 32bit 版 Windows 8.1 と想定してビルドします。

 

1. サンプルをダウンロード

以下の URL からサンプルをダウンロードして適当な場所に解凍します。ここでは、"C:\OEM Printer Customization Plug-in Samples" に解凍したものとして進めます。

 

OEM Printer Customization Plug-in Samples

https://code.msdn.microsoft.com/OEMDLL-Samples-71364d95

 

2. ソリューションファイルを開く

ソリューションファイルを Visual Studio で開きます。ソリューションファイルは以下のパスに格納されています。

 

C:\OEM Printer Customization Plug-in Samples\C++\oemdll.sln

 

3. プロジェクトのランタイムライブラリの設定を変更する

ビルドしたい構成のランタイムライブラリの設定を "マルチスレッド デバッグ (/MTd)" に設定します。

もちろんランタイムライブラリを予めターゲットマシンにインストールしていただければ、"マルチスレッド デバッグ DLL (/MDd)" もしくは "マルチスレッド DLL (/MD)" 設定でも動作いたしますので、お好みの方法を選択してください。

ここでは汎用的なサンプルのご案内ということで、できるだけ動作環境に依存しない設定方法で進めていきたいと思います。

ちなみに、ランタイムライブラリは Visual C++ 再頒布可能パッケージに含まれておりますので、ご使用の Visual Studio のバージョンに合わせて適宜ご利用ください。

ご参考までとはなりますが、Visual Studio 2013 の Visual C++ 再頒布可能パッケージは以下の URL からダウンロード可能です。

 

Visual Studio 2013 の Visual C++ 再頒布可能パッケージ

https://www.microsoft.com/ja-jp/download/details.aspx?id=40784

 

clip_image002

 

3. ソースコードをビルドする

ビルドしたいソリューション構成、CPU アーキテクチャに設定されていることであること確認してソリューションのビルドを行ってください。bitmap プロジェクトのみのビルドでも問題ありません。

ここでは、ソリューション構成を "Win8.1 Debug"、CPU アーキテクチャを "Win32" としてビルドいたします。

 

4. インストールに必要なファイルをターゲットマシンにコピーする

必要なファイルは以下の 4 つのファイルとなります。

 

C:\OEM Printer Customization Plug-in Samples\C++

|- bitmap.inf

|- bitmap.ini

|- bitmap.gpd

|- Win8.1Debug (もしくはWin8.1Release)

     |- bitmap.dll

 

上記 4 つのファイルを bitmap.inf の記述に合わせて以下のようなフォルダ構成にして、ターゲットマシンにコピーいたします。

”Win8.1Debug” というフォルダを “bitmap” という名前のフォルダに変更して “x86” というフォルダに “bitmap.dll” を格納しておりますのでご注意ください。ターゲットマシン上のコピー先のフォルダは「C:\BitmapPlugin」としています。

 

C:\BitmapPlugin

|- bitmap.inf

|- bitmap.ini

|- bitmap.gpd

|- bitmap

     |- x86

          |- bitmap.dll

 

プラグインのインストール

それではターゲットマシン上でプラグインをインストールしてみましょう。ターゲットマシンは 32bit 版 Windows 8.1 です。

 

1. [コントロールパネル] から [デバイスとプリンタの表示] を選択

 

clip_image004

 

2. [デバイスとプリンター] から [プリンターの追加] を選択

 

clip_image006

 

3. [プリンターの追加] から [探しているプリンターはこの一覧にはありません] を選択

 

clip_image008

 

4. [ローカル プリンターまたはネットワーク プリンタを手動設定で追加する(O)] を選択して、[次へ(N)] をクリック

 

clip_image010

 

5. [既存のポートを使用(U):] を選択し、ポートには [FILE: (ファイルへ出力)] を設定

 

clip_image012

 

6. インストールする対象を聞かれるので、[ディスク使用(H)…] をクリック

 

clip_image014

 

7. ファイルの場所を聞かれるので、"C:\BitmapPlugin\bitmap" を指定

 

clip_image016

 

8. Bitmap Driver が列挙されるので選択して [次へ(N)] をクリック

 

clip_image018

 

9. プリンター名やプリンター共有の設定を行って…

 

clip_image020

 

clip_image022

 

10. インストール完了です!

まだ完了はクリックしないでくださいね!

 

clip_image024

 

印刷

いよいよ印刷です。

ここまでくればあともう少しです!頑張っていきましょう!

 

1. 先ほどの画面で、[テスト ページの印刷(P)] をクリック

2. 出力するファイル名が聞かれるので、適当に “.bmp” 拡張子を付けて出力ファイルを指定

 

clip_image026

 

3. 印刷されたようです

 

clip_image028

 

4. 先ほど設定した出力先にファイルが作成されているので開いてみる…

 

clip_image030

 

5. テストページ画像が確認できた!

 

clip_image032

 

 

以上となりますが、いかがでしたでしょうか!

特別な手順は必要ないため、簡単な印象を持たれる方も多いのではないでしょうか。

簡単なわりには非常に有用なドライバですので、プリンタードライバの開発に是非ご活用いただければと思います。

 

では皆様、よいお年を!

また来年お会いいたしましょう!