- ベストアンサー
Javaから直接プリンターへ印刷する方法
Unix上のTomcatで動作するサーブレットから直接 プリンターへ印刷する方法を考えています。 PDFをブラウザに出力して、クライアントPCから 印刷する方法はたくさんありますが、これだと 個別の伝票印刷等では使い勝手が悪く、作業者の ITリテラシーが低いと実用的ではないと考えています。 また、市販のレポーティング・ツールを買えばできる ようですが、非常に値段が高くて手が届きません。 考えている方法は、例えばESC/PをTCP/IP経由で 受け取れるようなプリンタ機種があれば、Javaから ソケット経由でESC/Pをプリンタへ送信して、 印刷できるのではないか?と考えていますが、 そのようなプリンタはあるのかどうか、実績が あるのかどうかわからなくて躊躇しています。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>例えばESC/PをTCP/IP経由で受け取れるようなプリンタ機種があれば これを実現しているのはプリンタというよりもネットワークプリンタの役目ではないでしょうか?ネットワークプリンタで対応しているものであれば権限さえ問題がなければ印刷は可能であるはずだと思います。 ただし、ESC/Pであれば事前にドライバのインストールや登録も必要となるので結局のところ自由にとはいかないように思えますが・・・
その他の回答 (4)
- covachan
- ベストアンサー率38% (46/120)
>プリントサーバを経由せず直接プリンタに印刷を行う技術がIPプリンティングです。 プリントサーバ機能を内蔵したというイメージで同義だといったつもりなのですが・・・(^^; まあ、細かい仕様は違うのかもしれませんね。
- covachan
- ベストアンサー率38% (46/120)
Q1.そうです。ちなみにプリンタのIPへ515ポートで接続してみてください。おそらく反応があるはずです。JAVAで同様のことを行えば問題なく接続は行えるはずです。 Q2.私がイメージしているネットワークプリンタとはプリントサーバのことです。IPプリンティングについてはあまり知らないのですがおそらく同義だと思われます。
お礼
Q1の回答はなるほどです。ありがとうございます。 Q2の回答は理解しましたが、プリントサーバと IPプリンティングは別物ですね。 「IPプリンティング=プリントサーバを経由せずに 直接ネットワーク上のプリンターに印刷する方法」です。 印刷を実行するPC →(TCP/IP)→プリントサーバ →(シリアル)→プリンター という経路の印刷がプリントサーバを利用した印刷方法で、 印刷を実行するPC →(TCP/IP)→プリンター というように、プリントサーバを経由せず直接プリンタに 印刷を行う技術がIPプリンティングです。
- covachan
- ベストアンサー率38% (46/120)
いいえ。大丈夫だと思います。 ですが、おそらくですが、プリンタの初期化コマンドはかなり標準化されたとはいえ、それぞれ依存するのではないでしょうか?その辺の差異を吸収できるようであるならばドライバを使わずともできると思います。非常に大変だと思われますが検証を繰り返し対応していくしかないでしょうね。
補足
すばやい回答ありがとうございます。 Q1: ご回答の内容を「ネットワークプリンタであれば、 Javaからソケット経由で使用するプリンタのコマンドを 直接送信することで印刷が可能」と理解しましたが、 正しいでしょうか? Q2: ネットワークプリンタとIPプリンティング対応プリンタ は同じ意味でしょうか?別の意味でしょうか? もしご存知でしたら教えてください。
- mi-si
- ベストアンサー率35% (200/567)
JDK1.4以上なら、Java印刷サービスなるものがありますけど。
補足
Java印刷サービスはどんなものか早速確認してみました。 WindowsのJDKで動かす場合には、Windowsでプリンタの 設定をしたプリンターに対して印刷ができるようです。 つまりはJVM→WindowsOS→プリンタという流れで 印刷するもののようです。プリンタ・ドライバは Windowsにインストールされたものがそのまま使用される ものと思われます。 ということはUNIX系の場合も同様にプリンタ・ドライバ 等が必要になってくるのでしょうか?知っている方が いましたら教えてください。 UNIX系で動作させなければならないのですが、ネットを 検索してもこのAPIの情報は非常に少ないようです。
補足
私の認識ではESC/Pでテキスト情報の印刷だけであれば、 ドライバがなくてもできると思っています。 (簡単な帳票等ではこれで十分だと思っています。) 例えばWord文書をWindowsで印刷するとすると、 内部的にWord文書が印刷イメージに変換され (確かWMF形式)、それを各種プリンタで理解可能な 言語(ESC/PやPS)に変換する役割を持つのがプリンタ ドライバだと認識しています。 直接プリンタへESC/P等のコマンドを送信すればよいと 思っていますが、間違いでしょうか?もちろん、その 印刷プログラムはプリンタ依存になってしまいますが。