• ベストアンサー

Javaから直接プリンターへ印刷する方法

Unix上のTomcatで動作するサーブレットから直接 プリンターへ印刷する方法を考えています。 PDFをブラウザに出力して、クライアントPCから 印刷する方法はたくさんありますが、これだと 個別の伝票印刷等では使い勝手が悪く、作業者の ITリテラシーが低いと実用的ではないと考えています。 また、市販のレポーティング・ツールを買えばできる ようですが、非常に値段が高くて手が届きません。 考えている方法は、例えばESC/PをTCP/IP経由で 受け取れるようなプリンタ機種があれば、Javaから ソケット経由でESC/Pをプリンタへ送信して、 印刷できるのではないか?と考えていますが、 そのようなプリンタはあるのかどうか、実績が あるのかどうかわからなくて躊躇しています。

  • Java
  • 回答数5
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • covachan
  • ベストアンサー率38% (46/120)
回答No.2

>例えばESC/PをTCP/IP経由で受け取れるようなプリンタ機種があれば これを実現しているのはプリンタというよりもネットワークプリンタの役目ではないでしょうか?ネットワークプリンタで対応しているものであれば権限さえ問題がなければ印刷は可能であるはずだと思います。 ただし、ESC/Pであれば事前にドライバのインストールや登録も必要となるので結局のところ自由にとはいかないように思えますが・・・

iwashimizu
質問者

補足

私の認識ではESC/Pでテキスト情報の印刷だけであれば、 ドライバがなくてもできると思っています。 (簡単な帳票等ではこれで十分だと思っています。) 例えばWord文書をWindowsで印刷するとすると、 内部的にWord文書が印刷イメージに変換され (確かWMF形式)、それを各種プリンタで理解可能な 言語(ESC/PやPS)に変換する役割を持つのがプリンタ ドライバだと認識しています。 直接プリンタへESC/P等のコマンドを送信すればよいと 思っていますが、間違いでしょうか?もちろん、その 印刷プログラムはプリンタ依存になってしまいますが。

その他の回答 (4)

  • covachan
  • ベストアンサー率38% (46/120)
回答No.5

>プリントサーバを経由せず直接プリンタに印刷を行う技術がIPプリンティングです。 プリントサーバ機能を内蔵したというイメージで同義だといったつもりなのですが・・・(^^;  まあ、細かい仕様は違うのかもしれませんね。

  • covachan
  • ベストアンサー率38% (46/120)
回答No.4

Q1.そうです。ちなみにプリンタのIPへ515ポートで接続してみてください。おそらく反応があるはずです。JAVAで同様のことを行えば問題なく接続は行えるはずです。 Q2.私がイメージしているネットワークプリンタとはプリントサーバのことです。IPプリンティングについてはあまり知らないのですがおそらく同義だと思われます。

iwashimizu
質問者

お礼

Q1の回答はなるほどです。ありがとうございます。 Q2の回答は理解しましたが、プリントサーバと IPプリンティングは別物ですね。 「IPプリンティング=プリントサーバを経由せずに 直接ネットワーク上のプリンターに印刷する方法」です。  印刷を実行するPC  →(TCP/IP)→プリントサーバ  →(シリアル)→プリンター という経路の印刷がプリントサーバを利用した印刷方法で、  印刷を実行するPC  →(TCP/IP)→プリンター というように、プリントサーバを経由せず直接プリンタに 印刷を行う技術がIPプリンティングです。

  • covachan
  • ベストアンサー率38% (46/120)
回答No.3

いいえ。大丈夫だと思います。 ですが、おそらくですが、プリンタの初期化コマンドはかなり標準化されたとはいえ、それぞれ依存するのではないでしょうか?その辺の差異を吸収できるようであるならばドライバを使わずともできると思います。非常に大変だと思われますが検証を繰り返し対応していくしかないでしょうね。

iwashimizu
質問者

補足

すばやい回答ありがとうございます。 Q1: ご回答の内容を「ネットワークプリンタであれば、 Javaからソケット経由で使用するプリンタのコマンドを 直接送信することで印刷が可能」と理解しましたが、 正しいでしょうか? Q2: ネットワークプリンタとIPプリンティング対応プリンタ は同じ意味でしょうか?別の意味でしょうか? もしご存知でしたら教えてください。

  • mi-si
  • ベストアンサー率35% (200/567)
回答No.1

JDK1.4以上なら、Java印刷サービスなるものがありますけど。

参考URL:
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/jps/index.html
iwashimizu
質問者

補足

Java印刷サービスはどんなものか早速確認してみました。 WindowsのJDKで動かす場合には、Windowsでプリンタの 設定をしたプリンターに対して印刷ができるようです。 つまりはJVM→WindowsOS→プリンタという流れで 印刷するもののようです。プリンタ・ドライバは Windowsにインストールされたものがそのまま使用される ものと思われます。 ということはUNIX系の場合も同様にプリンタ・ドライバ 等が必要になってくるのでしょうか?知っている方が いましたら教えてください。 UNIX系で動作させなければならないのですが、ネットを 検索してもこのAPIの情報は非常に少ないようです。

関連するQ&A

  • UNIXからの印刷

    私はUNIXの初心者なのでよくわかりません。 OSはCOMPAQ製のTru64 UNIXです。 UNIXからLAN上で印刷させたくてプリンタについて調べていたのですが、基本的なところが全然わかりません。 いろいろ調べてみて印刷用としてエプソンのLP-8100とTCP/IP対応Ethernet I/Fカードで考えていたのですが、I/Fカードについて問い合わせたらTru64 UNIXでは動作検証をとっていないと言われました。 http://www.i-love-epson.co.jp/products/printer/laser/tokucyou/network.htm 全くわからないのでUNIXからの印刷させるための方法やお勧めのプリンタを教えてください。 それと調べているときに何度か目にしたpostscriptというものについて調べてみたのですがイマイチわかりません。 これはUNIXから印刷するときに必要なものなのでしょうか? 誰かわかりやすく説明してください。 お願いします。

  • PostgreSQLに接続できない

    PostgreSQL初心者です。 現在PostgreSQLを利用してサーバに接続しようと思っているのですが、 一向に接続できません。 利用しているレンタルサーバー会社で 「弊社サーバのPostgreSQLは、UNIXドメインソケット経由での接続のみをサポートしており、TCP/IP経由での接続はサポートしておりません。」 といわれています。 良く分からないなりに推測するに、 UNIXドメインソケット経由での接続のみでTCP/IP経由での接続はサポートしていないということは、 入力したDBサーバの、localhost又は127.0.0.1という文字は使えないということなのだと判断しています。 (このことがTCP/IP経由での接続??) だとすると、UNIXドメインソケット経由で接続したい場合は どのようにすればいいのでしょうか。 ちなみにレンタルサーバーですので、設定自体を変えることはできません。 このlocalhost又は127.0.0.1という入力方法以外で解決できる入力方法などはあるのでしょうか? 宜しくお願い致します。

  • Linuxに対応したプリンタ=UNIXに対応したプリンタ?

    UNIXマシンからTCP/IPの通るネットワークを通して プリンタに印刷させようとしています。 カラープリンタはこれから購入してWindowsマシンに接続するのですが、 機種選択に困っています。 「UNIX対応 プリンタ」で検索してもなかなか出てこず、 メーカーのホームページを見てもLinux対応の話しか出てきません。 Linux対応したプリンタなら、Unixに対応していると考えてもいいのでしょうか? postscript対応のプリンタ=Unix対応みたいなのですが、 postscriptだとものすごく高いし、 でもLinuxとUnixでは見た目から違うのでプリンタドライバも 違うような気もします。

  • プリンターが応答しない

    プリンターが応答しない。印刷したいデーターを「印刷」しようとするとプリンターが応答しません。印刷ジョブの表示で見ると「状態:エラー」になっています。実はデバイスとプリンターを開いてみると、使っているプリンターPXG930の機種とは別に「Epson ESC/P Standard7」というプリンターがありました。それを選択して「印刷」すると使っているプリンターPXG930が作動していました。そうやって使っても良かったのですが、以前はPXG930を選択して印刷できていたので、「Epson ESC/P Standard7」を削除したのです。そうして普通にPXG930を選択して印刷できるようにしようと思いました。新たにドライバーをインストールしてみたりもしましたが、応答しません。普通に接続しているプリンターを選択してその機種が応答して印刷できるようにするにはどうしたらよいでしょうか?

  • LP-S2200にESC/Pモードで印刷したい

    LP-S4000からESC/Pモードを使って印刷していましたが、 プリンターをLP-S2200に変えたら、文字化け印刷や 何も印刷されない状態になります。 LP-S2200からESC/Pモードを使って印刷する方法を 教えてください。 OSはWindowsServer2008です。 ※OKWAVEより補足:「EPSON社製品」についての質問です。

  • プリンター信号をパソコンで受けとる方法について

    プリンター信号をパソコンで受けとる方法について 古い装置をリニューアルする必要があり調査をしておりますが、故障しているのはプリンターでした。 内蔵プリンターは市販品ではなさそうですが、インパクトプリンターでセントロニクスのケーブルでつながっており、装置からの出力はESC/Pと書いてありました。 何が使えるか分からないがインパクトプリンターを買い別置きする、はたまた使えるならUSBプリンターを買うか、それともPCの画面に表示させるか考えております。 目標はESC/P信号をエクセルで受けPCの画面表示(必要なものだけ後で印刷できる)をしたいことです。 追記 この装置が動いていた時の様子は、プリンターは信号を受けた時だけ印刷し、1日30回程度(60行)印刷するそうです そのためロール紙のインパクトプリンターがついていたわけです、プリンターは内蔵式で型番およびインクリボンも形状不明の状態です。 そのためRSCケーブルを使いPCで信号を受けることができないか、考えたわけです。 その後、受けたい側のPCにCOMポートが無いことにきずき、MOXA製のシリアル⇒USB変換装置を接続し現在に至っております。25ピン⇒15ピン⇒USB PCでの受けかたなどご指導をお願いします

  • JAVAでノンブロッキングモードでの通信はできますか。

    このたび、JAVAでTCP/IPプロトコルの通信を行うことになりました。今までは、UNIXでC言語で開発してきたのですが、その場合は、ノンブロッキングモードを使用してプログラムを作成しました。JAVAで、ノンブロッキングモードで通信することは、可能なのでしょうか。又、可能であれば、その方法は、ソケットオプションの設定で行うのでしょうか。

    • ベストアンサー
    • Java
  • プリンターの印刷されるまでの速度について

    宜しくおねがいします。 印刷ボタンをクリックしてからプリンターの印刷がはじまるまでに 1分ほどかかります。 もっと早くする方法はないでしょうか 社内にパソコンが3台ネットワークでつながっております。 仮に A,B,C のパソコン AにUSB接続でインクジェットプリンターがつながっております。 このプリンターを共有しております。 Aのパソコンで印刷した場合はすぐに印刷がはじまりますが B,C のパソコンからネットワーク経由でAに接続されたプリンターをつかうと 印刷が始まるまでに1分ほどかかります。 アドバイスおまちしております。

  • ネットワークプリンタで割付印刷

    Cano PIXUS 860iを,LinkStation経由でネットワークプリンタにしたところ,割付印刷ができなくなりました.これは仕様なのでしょうか? なんとか割付印刷を使えるようにする方法はありませんでしょうか?

  • プリンタ直接印刷

    パソコンではないのですが、似たような機械でプリンタを直接制御して印刷しようとしています。ESC/Pの制御コードをもつレーザプリンタで正常に印字できますが、スピードの遅いドットプリンタなどでは文字化けしてしまいます。 直接の原因は印刷処理が間に合わずデータが上書きされてしまうためだということはわかるのですが、それがなぜ起こるのかわかりません。データ送出の際にはBUSY信号を確認し、それがOFFになってからデータを送っています。内部をデバッガで確認したところ確かにBUSY信号のON/OFFが確認できましたので、読み間違ってはいないようです。STROBE信号も充分に気をつけて所定の時間以上になるように気をつけているつもりです。 ひとつ不思議なのは、同じロジックにもかかわらず、グラフィック印刷する時は、データをゆっくり送らなければうまくいかないことです。現象からするとBUSYが解除されたからといってすぐにデータを送ってはいけない様に思えるのですが、そんな注意書きはプリンタマニュアルのどこにもありません。 もしかしたら常識なのかもしれませんが、何か他に直接制御する上で気をつけなければならないことがあるのでしょうか。なお複数のプリンタで同じ現象がおきますので、特定のプリンタ固有の問題では無いと思われます。

専門家に質問してみよう