0

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

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

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

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

4

3 回答 3

2

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

于 2010-07-22T17:39:32.903 回答
2

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

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

打印队列将使用“红色ictor 端口监视器”( RedMon ) 将传入的 PostScript 作业引导到您选择的程序/应用程序/批处理脚本。

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

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

这是一个文档,描述了一些关于 RedMon 的基本需要知道的事情:


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

第一个将到达标准输入(stdin,-在命令末尾)的数据转换为单页、黑白 TIFF G4,分辨率为 600dpi,其中每页是一个单独的文件,名为page_001.tif,page_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 '-'!
于 2010-08-05T16:35:26.337 回答
2

根据您最初的问题回顾我的第一个答案,我不再理解为什么我如此强调“将传入的工作转换为图像”阶段。可能是因为您在其中一个答案中提到您想要类似于imageprinter的功能。

无论如何,既然您现在明确表示您的主要目标是将所有传入的作业转发到其他计算机(安装了真正的打印机) - 这也可以通过以下方式实现:

  • 带有 PostScript 驱动程序的打印队列
  • 鬼脚本
  • RedMon 作为打印队列的端口监视器
  • 一个 DOS 批处理脚本

现在的区别是双重的:

  1. 现在您不会以将传入的 PostScript 转换为图像格式的方式设置 RedMon/Ghostscript。
  2. 现在您设置 RedMon 以通过“remotecomputer”(包括真实驱动程序)的真实目标队列“sharedprintername”路由作业的方式运行 Ghostscript。

Ghostscript 命令类似于:

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