我试图弄清楚是否可以在.NET中创建自定义打印端口。 我试图实现的功能是拦截打印机驱动程序生成的数据,并将其发送到远程服务器而不是设备。
答案 0 :(得分:6)
是的,确实如此。我是用C#编写的,编写了一个由软件控制的PDF打印机。
实现目标的步骤是:
以下是您的自定义应用程序的一堆代码:
string fname = Environment.GetEnvironmentVariable("TEMP") + @"\";
fname += DateTime.Now.ToString("yyyyMMdd-hhmmss-fffff") + ".ps";
FileStream fs = new FileStream(fname, FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
StreamReader sr = new StreamReader(Console.OpenStandardInput());
sw.Write(sr.ReadToEnd());
sw.Flush();
sw.Close();
sr.Close();
我编辑我的帖子以回答你的评论:
答案 1 :(得分:1)
不是真的。创建虚拟端口驱动程序或网络重定向器都需要本机代码。然而...
您可以通过安装网络打印端口并在.NET中实现服务器端来捕获数据。例如,LPR会要求您创建一个TCP套接字服务器,这在C#中完全可行。
我不知道任何现有的C#实现,但您可以从p910nd的源代码中学到很多东西。
答案 2 :(得分:0)
您还可以通过安装免费实用程序mfilemon来使用多文件端口。借助此端口,您可以将打印机的输出定向到您希望的文件夹,然后您也可以启动您的应用程序。