用于接收printjobs并将其转发到LAN中的打印机的软件

时间:2010-08-03 19:43:46

标签: c# windows printing network-programming drivers

我想创建一个软件,Windows会将其检测为已安装的打印机驱动程序,并在“设备和打印机”下列出该软件

就像 ImagePrinter sowftware一样,您可以通过以下链接访问它。 http://sourceforge.net/projects/imageprinter/

当此计算机上安装此图像打印机时,Windows会在“打印机和设备”下列出它,以便我们可以右键单击并在我们的网络中共享它。局域网用户可以将其添加为远程打印机并向其发送打印作业,然后将打印作业转换为图像格式(jpg等)并保存在指定目录中。

我需要的是从像ImagePrinter这样的局域网上的其他PC上获取这些打印作业,并将它们发送到LAN中共享的真实打印机,作为从这台自己的机器发送。 (就像运行我的软件的计算机发送那些打印作业一样),这样就可以打印出来了。

这样做我需要得到两件事...... 1-以某种方式创建软件windows会将其检测为打印机(因此可以轻松共享并接收打印作业)

2-将打印作业发送到已安装的远程打印机,这些打印机添加到运行我的软件的机器上,就像机器自己的打印作业一样。

我想在c#中使用它们(因为我的其余应用程序代码都在C#中,无论如何它可以组合在一起,那么编程语言就不是问题了。)

请给我说明,甚至是一些可以阅读的主题..因为我不知道如何构建它。只有一点点自信,因为ImagePrinter是一个类似的软件..所以任务是可能的。

提前致谢。

1 个答案:

答案 0 :(得分:3)

这可以通过正确的方式结合四种成分来完成:

  • 使用PostScript打印机驱动程序进行打印队列设置,在LAN上共享;
  • Ghostscript(向下滚动以获取gs871w{32,64}.exe)将PostScript转换为图片;
  • Redmon(下载redmon17.zip)作为“打印机端口监视器”;
  • 一个DOS批处理文件,可以完全按照您的意愿执行;

printqueue将使用“红色 - 导出端口 Mon -itor”将传入的PostScript作业引导至您选择的程序/应用程序/批处理脚本。 / p>

剩下要做的就是你的工作:编写一个简单的程序/应用程序/批处理脚本,它可以做三件事:

  1. 将传入的PostScript作为输入,
  2. 调用Ghostscript命令行将输入转换为您选择的%imageformat%
  3. 最后将%imageformat%作为作业发送到您选择的打印机。
  4. 这是一篇描述RedMon的基本需要知识的文档:


    以下是一些其他提示:

    如果你是Ghostscript的新手,你可能会遇到构建一个可以完成你需要的命令行的最大问题。这里有些例子。

    第一个将来自标准输入(stdin,命令末尾的-)的数据转换为单页黑色+白色TIFF G4,分辨率为600dpi,每页为单独的文件,名为page_001.tifpage_002.tif等:

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

    这是一个Ghostscript命令行,它会生成相同的输出,但这次是一个单页多页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?好的,为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!