Winspoolとは、Microsoft社のWindowsにおける印刷スプールである。
Windows 95以降から存在しているが、OSのバージョン(種類)によってWinspoolの仕様が異なっているが、下位互換性があるhttps://support.microsoft.com/ja-jp/help/981070/windows-can-t-open-add-printer-error-in-a-64-bit-version-of-win7-or-of。
言語から利用する際はWin32APIなので、Winspool.DRVではあるがDLL通信を利用する言語仕様に合わせて記述する必要がある。
C++であれば #include <winspool.h> がサポートされているhttps://s-kita.hatenablog.com/entry/20110703/1309674327。
スプール先をネットワークプリンタにすることはできるが、言語からWinspoolを利用しての出力は、利用しているWindows上にインストールされているプリンタのみが利用対象プリンタとなる。
スプールの種類には一般的なNT EMF スプーリングの他に、プリンタドライバによるGDI処理を行わずにプリンタ固有の制御コード(ESC/PやPDFなど)を直接プリンタへ送信する方法がある。
プリンタ固有の制御コードは生(Raw)情報なので、事前に生成してプリンタへ送信することを「Raw印刷」とも呼ばれるhttps://blogs.msdn.microsoft.com/jpwdkblog/2009/08/14/683/。具体的なソースコードとして、GitHub上でRawPrintが公開されているhttps://github.com/frogmorecs/RawPrint (コマンドラインの引数にプリンタ名、ファイルパス、印刷ジョブ名の3つを指定することが可能)。
脚注