我正在寻找创建一个将数据传递到我的.NET应用程序的虚拟打印机。我想创建一个安装程序,安装打印机和.NET应用程序。我们真的很高兴能够用C#编写它,但我觉得这需要编写一个打印机驱动程序是非托管代码。有谁知道一个相当干净的教程或如何做到这一点的例子?
答案 0 :(得分:18)
访问http://www.printerplusplus.com。它是开源的.NET虚拟打印机。它为您提供了一个安装程序和一个.NET类,用于编写代码来处理“打印机数据”。
答案 1 :(得分:9)
使用Github项目确切地问你的问题:Microsoft / Windows-driver-samples / print / XPSDrvSmpl
https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl
应用程序:收听内部端口
Flow:从单个安装程序安装打印机和应用程序。当应用程序侦听内部端口时,用户使用您的驱动程序打印内容。发送数据时,应用程序会将其选中。这适用于XPS,可以转换为PDF,但无论您打印什么,流程都是类似的。如果您还需要其他任何内容,请查看GitHub上的Microsoft / Windows-driver-samples / print /或其他符合您需求的来源。
<强>更新强>
关于如何让司机在这里工作的很多问题都是一个简单的例子:
如果您尚未安装Windows驱动程序工具包(WDK),请首先下载。安装时选择在最后一步添加Visual Studio的扩展名。在Visual Studio 2017安装中,您需要Desktop development with C++
才能拥有正确的SDK。如果你没有它,请看下面的anser如何添加它。
How do I add features to Visual Studio 2017?
https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit
然后下载Windows-driver-samples master的.zip
文件:
https://github.com/Microsoft/Windows-driver-samples/archive/master.zip
导航到文件夹<UnzipFolder>\print\XPSDrvSmpl
并在Visual Studio中打开XPSDrvSmpl.sln
。
然后关注GofHub上的微软自己的指南。正如您所看到的,它适用于Visual Studio 2015,但我认为它在2017年是相同的(尚未测试):
要使用Windows驱动程序工具包(WDK)10和Visual Studio 2015构建驱动程序解决方案,请执行以下步骤。
此时,Visual Studio 2015将能够构建驱动程序包并将文件输出到磁盘。要配置驱动程序签名和部署,请参阅开发,测试和部署驱动程序。
https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl#build-the-sample
答案 2 :(得分:8)
我认为你必须做很多的WinAPI包装。开始研究 在Windows Driver Development Kit找到你必须做的事情。
我还发现这个商业版Printer Driver Resource Toolkit用于.NET ...
答案 3 :(得分:5)
你可以让你的应用程序像LPD类型的打印机或监视器端口9100一样暴露自己。然后你可以安装你喜欢的任何打印驱动程序,并将它指向你的应用程序。
答案 4 :(得分:2)
正在寻找类似问题的答案,并通过维基百科找到此链接 - http://www.colorpilot.com/emfprinterpilot.html(允许以不同语言创建虚拟打印机)
答案 5 :(得分:0)
为什么不考虑使用替代方法。就像使用中间现成的打印程序一样,例如那些免费提供的Print-to-PDF应用程序。然后你需要的是使用一些第三方库(它也有免费和开源差异)解码PDF而不是破解你的头脑重新发明轮子。还有其他Print-to-XXX应用程序,您可以根据您认为合适的格式进行考虑。
答案 6 :(得分:0)
我不解释PDF方法也不好。我不知道你为什么要做你想做的事。也许您正在尝试自己编写PDF打印机。
我认为你应该真的给Windows驱动程序开发一下。如果你想开发一个打印机驱动程序,我想你必须用C ++来做。
祝你好运。
答案 7 :(得分:-1)
你做不到。 Windows driver model是原生的。
答案 8 :(得分:-1)
如果我没记错,Microsoft在打印机驱动程序开发中不支持.NET。我还没有遇到过纯.NET打印机驱动程序。你将是一个非常勇敢的人!网站“Printer Driver Resource Toolkit”并未说明驱动程序是用.NET编写的