0

他のコンピュータからの印刷ジョブを受け入れ、それらの印刷ジョブをプリンタが接続された LAN 上の PC にルーティングできるソフトウェアを作成したいと考えています。

どのように起こるか -> 1- 「仮想プリンター」と呼ばれるそのソフトウェアがコンピューター「X」にインストールされている場合、Windows はそれがそのコンピューターに接続されているプリンタードライバー/プリンターであると見なす必要があります。2- 次に、その PC の管理者が Windows の [デバイスとプリンター] に移動し、[仮想プリンター] を選択し、右クリックしてプロパティを表示し、[このプリンターを共有する] チェックボックスを選択します。コンピューター「X」に接続された LAN には共有プリンター呼び出し「仮想プリンター」があります。 4- 何かを印刷する必要があるときに「仮想プリンター」を選択することで、この「仮想プリンター」に印刷ジョブを送信できます。

このプログラム (おそらく c#) を記述して、それ自体を Windows にプリンターとして表示し、着信印刷ジョブを受け入れて、プリンターが接続されている目的のコンピューターに送信するにはどうすればよいですか。

このことをコーディングする方法がわかりません。また、知識もありません。いくつかのリソース、コード、サンプル プロジェクト、または少なくともこれに似たサンプルを手伝ってください。ありがとう

4

3 に答える 3

2

これは、次の 4 つの成分を適切に組み合わせることで実現できます。

  • LAN 上で共有される PostScript プリンタ ドライバを使用したプリント キューのセットアップ。
  • gs871w{32,64}.exePostScript をイメージに変換するGhostscript (下にスクロールして取得)。
  • redmon17.zip「プリンター ポート モニター」として機能するRedMon (ダウンロード)。
  • やりたいことを正確に実行するための DOS バッチ ファイル (または必要に応じて C# プログラム)。

printqueue は、' Red irector Port Monitor ' (RedMon) を使用して、着信 PostScript ジョブを選択したプログラム/アプリケーション/バッチスクリプトに転送します。

あとはあなたの仕事です: 3 つのことを行う単純なプログラム/アプリケーション/バッチ スクリプトを作成します。

  1. 着信 PostScript を入力として受け取り、
  2. Ghostscript コマンドラインを呼び出して、入力を選択した %imageformat% に変換します。
  3. 最後に、%imageformat% をジョブとして選択したプリンタに送信します。

以下は、RedMon に関して知っておくべき基本事項のいくつかを説明するドキュメントです。


あなたが Ghostscript の初心者であれば、必要なことを実行するコマンドラインを構築する際におそらく最大の問題を抱えているでしょう。下記は用例です。

最初のものは、標準入力 (-コマンドの最後にある stdin) に到着したデータを、解像度 600dpi の単一ページの白黒 TIFF G4 に変換します。各ページはpage_001.tifpage_002.tif、 などの名前の個別のファイルです。

gswin32c ^
   -dBATCH ^
   -dNOPAUSE ^
   -dSAFER ^
   -sDEVICE=tiffg4 ^
   -r600x600 ^
   -sOutputFile=c:/path/to/output/page_%03d.tif ^
   -       ### <-- note this '-'!

同じ出力を生成する Ghostscript コマンドラインを次に示しますが、今回は 1 つのマルチページ TIFF G4 として生成します。

gswin32c ^
   -dBATCH ^
   -dNOPAUSE ^
   -dSAFER ^
   -sDEVICE=tiffg4 ^
   -r600x600 ^
   -sOutputFile=c:/path/to/output/multi_page_g4.tif ^
   -       ### <-- note this '-'!

ああ、白黒 G4 TIFF ではなく、カラー TIFF、32 ビット CMYK が必要ですか? OK、Ghostscript 用に別の出力デバイスを使用します。

gswin32c ^
   -dBATCH ^
   -dNOPAUSE ^
   -dSAFER ^
   -sDEVICE=tiff32nc^
   -r600x600 ^
   -sOutputFile=c:/path/to/output/multi_page_color.tif ^
   -       ### <-- note this '-'!

あなたはJPEGが欲しいですか?申し訳ありませんが、複数ページの JPEG などはありません。しかし、単一ページは問題ありません:

set outputname=some-uniq-name && ^
gswin32c ^
   -dBATCH ^
   -dNOPAUSE ^
   -dSAFER ^
   -sDEVICE=jpeg ^
   -dJPEGQ=95 ^
   -r600x600 ^
   -sOutputFile=c:/path/to/output/%outputname%-page_%03d.jpeg ^
   -       ### <-- note this '-'!
于 2010-08-05T16:35:26.337 に答える
2

元の質問に照らして最初の回答を振り返ってみると、なぜ「入ってきたジョブを画像に変換する」段階を重視するのか理解できません。おそらく、回答の 1 つで、imageprinterに似た機能が必要であると述べたためです。

とにかく、主な目標はすべての受信ジョブを他のコンピューター (実際のプリンターがインストールされている) に転送することであることが明らかになったので、これは次の方法でも実現できます。

  • PostScript ドライバーを使用した印刷キュー
  • ゴーストスクリプト
  • 印刷キューのポート モニターとしての RedMon
  • DOS バッチ スクリプト

現在の違いは 2 つあります。

  1. これで、受信 PostScript を画像形式に変換する方法で RedMon/Ghostscript をセットアップしなくなりました。
  2. ここで RedMon をセットアップして Ghostscript を実行し、'remotecomputer' (実際のドライバーを含む) の実際のターゲット キュー 'sharedprintername' を介してジョブをルーティングします。

Ghostscript コマンドは次のようになります。

  gswin32c.exe ^
   -dNOPAUSE ^
   -dBATCH ^
   -dQUIET ^
   -sDEVICE=mswinpr2 ^
   -dNoCancel ^
   -sOutputFile="%%printer%%\\remotecomputer\sharedprintername" ^
   -        ### <-- note this '-' !
于 2010-08-06T07:39:33.290 に答える
2

Windows で仮想プリンターを作成できる商用コンポーネントがあります。http://www.colorpilot.com/emfprinterpilot.htmlを参照してください。

于 2010-07-22T17:39:32.903 に答える