Open3
Unity プリンター実装調査
ピン留めされたアイテム
実装方法
- Unityから印刷コマンドをたたく形で、プリンターで印刷を行う
- 多くのプリンターは、PCからlprコマンドでアクセスできるようになっているため、lprコマンドを使用する
印刷コマンドって何?
コンピュータがプリンターに「このファイルを印刷して!」とお願いするときに使う方法のことです。印刷コマンドにはいくつか種類があります。ここでは主に以下の2つを比較して説明します:
- rundll32 コマンド:Windows専用の方法。
- lpr コマンド:もっと多くのプリンターで使える方法。
1. rundll32 コマンドってなに?
簡単にいうと:
Windowsがもともと持っている機能を使って、画像を印刷する方法です。
どうやって動くの?
Windowsには「画像ビューアー(画像を表示するアプリ)」が入っていて、このビューアーを使って印刷します。
いいところ:
- 特別な準備をしなくても、すぐに使えます。
- USBでつながったローカル(近くにある)プリンターによく対応しています。
よくないところ:
- ネットワークプリンター(Wi-Fiなどで接続されているプリンター)では使えないことがあります。
- 画像以外(PDFやWordのファイルなど)は印刷できません。
2. lpr コマンドってなに?
簡単にいうと:
多くのプリンターが使える「標準的な印刷方法」です。ネットワークでも使えます。
どうやって動くの?
コンピュータがプリンターに「このファイルを印刷して」と直接お願いする仕組みです。
いいところ:
- ネットワークプリンターでも使えます。
- PDFやテキストファイルも簡単に印刷できます。
- Windowsだけでなく、MacやLinuxでも使えます。
よくないところ:
- Windowsでは、事前に「LPRを使えるようにする」設定が必要な場合があります。
- 古いプリンターでは使えないことがあります。
どうしてコマンドを変える必要があるの?
プリンターの種類によって、使える印刷方法が違うからです。たとえば:
-
家庭用のUSB接続プリンター →
rundll32
でOK。 -
オフィスにあるネットワークプリンター →
lpr
を使う方が良い。
つまり、使いたいプリンターに合わせてコマンドを選ぶ必要があります。
具体的な違いを見てみよう
使うコマンド | どんなプリンターで使える? | 印刷できるファイルの種類 | 使いやすさ |
---|---|---|---|
rundll32 |
USB接続のプリンター | JPEG、PNGなどの画像ファイル | 簡単(特に設定は不要) |
lpr |
USB接続のプリンター、ネットワークプリンターやPDF対応プリンター | PDF、画像、テキストなど幅広い | 少し準備が必要(設定が必要な場合あり) |
3. どのコマンドを選ぶべきか?
利用する環境やプリンターの種類によって適切なコマンドを選ぶ必要があります。
条件 | 推奨コマンド | 理由 |
---|---|---|
ローカルUSBプリンター | rundll32 |
簡単に設定・印刷可能であり、特別なセットアップが不要。 |
ネットワークプリンター | lpr |
LPRプロトコルを使用することで、ネットワーク接続のプリンターに直接アクセスできる。 |
高品質印刷や詳細設定が必要 | 専用ドライバやAPI | プリンターの詳細機能(解像度設定や両面印刷)を活用するためには、メーカー提供のツールが必要。 |
クロスプラットフォーム | lpr |
Windows、Linux、MacOSのすべてで動作可能な標準プロトコル。 |
PDF/多様な形式を印刷 | lpr |
PDFやPostScript形式をそのまま印刷可能。 |
参考になりそうなサンプルコード
リポジトリ
機能概要
-
wmic printer get name
- コマンドを使ってシステム上の利用可能なプリンター名を取得している
-
rundll32
コマンド- Windowsのライブラリ(
shimgvw.dll
)を使用して、指定したプリンターにファイルを印刷しています。 - ローカルプリンター(USB接続など)での簡単な印刷に適しています。
- Windowsのライブラリ(
※shimgvw.dllって何?
shimgvw.dll は、Windowsに入っている画像を表示するための機能を持ったファイルです。主に古いWindows(Windows XPや7)で使われていたもので、画像ビューアや画像の印刷をサポートしています。