Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 接收打印作业并将其转发到LAN中打印机的软件_C#_Windows_Printing_Network Programming_Drivers - Fatal编程技术网

C# 接收打印作业并将其转发到LAN中打印机的软件

C# 接收打印作业并将其转发到LAN中打印机的软件,c#,windows,printing,network-programming,drivers,C#,Windows,Printing,Network Programming,Drivers,我想创建一个软件,windows将其检测为已安装的打印机驱动程序,并在“设备和打印机”下列出该软件 与图像打印机一样,您也可以通过以下链接访问它。 当此图像打印机安装在计算机上时,windows会将其列在“打印机和设备”下,以便我们可以右键单击并在网络中共享。LAN用户可以将其添加为远程打印机并向其发送打印作业,然后将这些打印作业转换为图像格式(jpg等),并保存在指定的目录中 我需要的是从LAN上的其他PC(如ImagePrinter)获取这些打印作业,并将它们发送到LAN中共享的真实打印机

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

与图像打印机一样,您也可以通过以下链接访问它。

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

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

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

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

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

请给我一些指导,甚至是一些可以阅读的主题。。因为我不知道如何建造它。因为ImagePrinter是一个类似的软件,所以没有什么信心。。因此,这项任务是可能的


提前感谢。

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

  • 打印队列设置,带有PostScript打印机驱动程序,在局域网上共享
  • (向下滚动以获取
    gs871w{32,64}.exe
    ),将PostScript转换为图像
  • (下载
    redmon17.zip
    )作为“打印机端口监视器”
  • 一个DOS批处理文件,完全满足您的要求
打印队列将使用“Red-director端口Mon-itor”将传入的PostScript作业传送到您选择的程序/应用程序/批处理脚本

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

  • 将传入的PostScript作为其输入
  • 调用Ghostscript命令行将输入转换为您选择的%imageformat%
  • 最后将%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!
    
    gswin32c^
    -dBATCH^
    -多瑙河^
    -德萨费尔^
    -sDEVICE=tiffg4^
    -r600x600^
    -sOutputFile=c:/path/to/output/page_u%03d.tif^
    
    -######我找到了一些有关Microsoft通用打印机驱动程序的信息。有人知道这方面的信息吗?如何使用它,这个驱动程序可以吗?有更好的选择吗?下面是它的MSDN链接谢谢这个问题是重复的--我以前应该注意到的。非常感谢Pipita,因为这对我来说是很多信息。你的回答给出了一个非常详细的解决方案。现在我正在关注您的详细信息,并阅读更多关于ghostscript和Redmon的内容。我有一些问题,它们听起来可能不合适,因为我不知道打印作业处理流程。在不使用ghostscript转换为图像格式的情况下,是否可以直接接受打印作业并将其转发到另一台连接了真正打印机的计算机?再次感谢!是的,那是可能的这个问题是“打印作业接受和发送软件”的副本[,顺便说一句。(我以前没有注意到)。@Zerone:请参阅我对重复问题“打印作业接受和发送软件”的第二个答案(位于)
    gswin32c ^
       -dBATCH ^
       -dNOPAUSE ^
       -dSAFER ^
       -sDEVICE=tiffg4 ^
       -r600x600 ^
       -sOutputFile=c:/path/to/output/multi_page_g4.tif ^
       -                           ### <-- note this!
    
    gswin32c ^
       -dBATCH ^
       -dNOPAUSE ^
       -dSAFER ^
       -sDEVICE=tiff32nc^
       -r600x600 ^
       -sOutputFile=c:/path/to/output/multi_page_color.tif ^
       -                           ### <-- note this!
    
    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!