2010-07-22 51 views
0

我想创建一个可以接受来自其他计算机的打印作业的软件,然后将这些打印作业通过打印机连接到LAN上的PC。打印作业接受和路由软件

将如何发生 - > 1-当在计算机“X”上安装名为“虚拟打印机”的软件时,Windows应该认为它是该计算机的打印驱动程序/连接打印机。 2-然后,该PC的管理员转到窗口中的“设备和打印机”并选择“虚拟打印机”,右键单击并查看属性,然后选中“共享此打印机”复选框 3-现在LAN上的其他PC可以看到在连接到计算机的LAN中有一个共享的打印机调用“虚拟打印机”“X” 4-因此,他们可以在需要打印某些内容时通过选择“虚拟打印机”来将打印作业发送到该“虚拟打印机” 。

我该如何编写此程序(可能是c#)以将自身作为打印机显示给Windows,然后接受传入的打印作业并将它们发送到连接了打印机的所需计算机。

我不知道如何编码这个东西,我也没有知识,请帮助我一些资源,代码或示例项目或至少与此类似的示例。 谢谢

+0

这一个是HTTP的副本://计算器。com/questions/3400208/software-to-receive-printjobs-and-forward-them-to-printers-in-a-lan - 我应该注意过。 – 2010-08-06 07:53:11

回答

2

回顾我在你原来的问题之光第一个答案,我也不再明白,为什么我把这么多的强调一个“进入工作转换为图像” -stage。可能是因为你在其中一个答案中提到了你想要的功能类似于imageprinter

  • 打印队列: -

    不管怎样,既然你现在清楚地表明你的主要目标是将所有传入的作业到其他计算机(其中安装了真正的打印机)这也可以实现与PostScript驱动程序

  • Ghostscript的
  • 雷德曼为端口监视器打印队列
  • DOS批处理脚本

现在的差别是双重的:

  1. 现在你没有设置雷德曼/ Ghostscript的中传入的PostScript转换为图像格式的方式。
  2. 现在您设置RedMon以通过真实目标队列'远程计算机'(包括真实驱动程序)上的真实目标队列'sharedprintername'来运行Ghostscript。

Ghostscript的命令将类似于:

gswin32c.exe^
    -dNOPAUSE^
    -dBATCH^
    -dQUIET^
    -sDEVICE=mswinpr2^
    -dNoCancel^
    -sOutputFile="%%printer%%\\remotecomputer\sharedprintername"^
    -  ### <-- note this '-' ! 
+0

非常感谢pipitas,现在我正在阅读它,这非常有帮助。您提供的有关将printjobs转换为图像格式的信息不会被浪费,因为我打算在运行此软件的计算机上保存打印作业的jpeg图片。所以再次感谢这些细节。 – Zerone 2010-08-06 11:08:06

+0

@皮皮塔斯:你能指点我的任何文章或在线资源创建Windows的PostScript打印机驱动程序。在你教育我的时候,现在我需要先建立起司机。由于所有这些话题都非常新,似乎我必须学习很多东西。对不起,麻烦不断,非常感谢你的帮助。 – Zerone 2010-08-07 14:42:27

+0

@皮皮塔斯:我已经找到一个资源..让我知道你是否对此有任何评论。 http://www.stat.tamu.edu/~henrik/GSPSprinter/GSPSprinter.html 谢谢 – Zerone 2010-08-07 14:46:19

2

有一个商业组件允许您在Windows中创建虚拟打印机。见http://www.colorpilot.com/emfprinterpilot.html

+0

非常感谢您的回复。至少现在我知道这种事情是实际的。 商业软件实际上是确定打印机并将a.ini文件传输回客户端,以便客户端将打印作业发送给打印机。但我需要的不是那个。我想创建软件,以便它可以接受打印作业(EMF文件),然后将打印作业(作为自己的作业)转发到远程或本地打印机。感谢您的答复。 – Zerone 2010-07-23 04:12:47

+0

我发现了一个类似的软件,名为“图像打印机”,下面是该链接 http://sourceforge.net/projects/imageprinter/ http://code-industry.net/imageprinter.php 但图像打印机而不是将打印作业转发给真正的打印机;它将其转换为任何图像文件格式(.jpeg bmp等) 我无法找到此源代码。大多数功能与我的相似,只是根据其设置将打印转换为图像文件格式,而我需要将打印作业转发到远程或本地打印机以在纸上打印。 感谢您的意见。 – Zerone 2010-07-23 04:15:20

+1

@Zone:对帮助你的人说“谢谢”的一个非常有效的方式是提高他们的答案。只需点击答案左上方的小指向上的箭头即可...... – 2010-08-05 09:16:54

2

这是可以做到以正确的方式结合四种成分:

  • 打印队列设置与PostScript打印机驱动程序,在局域网上共享;
  • Ghostscript(向下滚动获取gs871w{32,64}.exe)将PostScript转换为图像;
  • RedMon(下载redmon17.zip)作为'打印机端口监视器';
  • 一个DOS批处理文件(或者一个C#程序,如果你想的话)做你想要的;

的打印队列将使用“ irector端口周一 itor”(雷德曼)到通道进入的PostScript作业到您选择的程序/应用/ batchscript。

剩下的是什么做的是你的工作:编写一个简单的程序/应用/ batchscript它做了三两件事:

  1. 把传入的PostScript作为其输入,
  2. 调用Ghostscript的命令行输入转换成您选择的%imageformat%,
  3. 并最终将%imageformat%作为作业发送到您选择的打印机。

这里是一个描述文件的一些关于雷德曼的基本需求方知事情:


如果你是一个新手到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 '-'! 

哦,你不” t想要黑色+白色e 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 '-'! 
+0

谢谢皮皮塔斯。有没有使用Microsoft通用打印机驱动程序的另一种简单方法?我最近发现了这些信息。 – Zerone 2010-08-06 04:19:06

+1

@Zone:不,使用微软通用打印机驱动肯定比较困难。您需要了解MS源代码,并且您需要添加自己的源代码以获得所需的功能。我建议的解决方案可以用几行批处理程序编写脚本。 – 2010-08-06 07:18:10

+0

非常感谢我澄清了很多麻烦,现在我可以专注于使用ghostscript进行开发。那么你给我提供了很多我没有在其他地方找到的信息。 – Zerone 2010-08-06 11:10:33