1

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

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

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

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

为此,我需要做两件事.. 1-以 Windows 将其检测为打印机的方式创建软件(因此可以轻松共享并接收打印作业)

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

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

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

提前致谢。

4

1 回答 1

3

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

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

打印队列将使用“ Red -irector Port Mon -itor”将传入的 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-05T08:51:15.907 回答