【发布时间】:2021-01-04 13:55:06
【问题描述】:
tl;dr 如何从 .net Core 3.1 Windows 服务打印 pdf?
我创建了一个简单的打印后台处理程序 BackgroundService 类,它作为 Windows Service 运行,并通过 Web api 监控打印队列,一切都非常愉快。
我在开始编写实际打印代码时发现的一个小问题是 .net core 似乎不希望人们从 BackgroundService 类中打印文档。
System.Printing 的文档似乎无论如何都建议这样做。
不支持使用 System.Printing 命名空间中的类 在 Windows 服务或 ASP.NET 应用程序或服务中。尝试 从这些应用程序类型之一中使用这些类可能 产生意想不到的问题,例如服务性能下降 和运行时异常。
System.Drawing.Printing 在其文档中有类似的注释,指出它也不能可靠地用于 Windows 服务。
从BackgroundService Windows 服务打印是一件坏事(tm)吗? System.Printing / System.Drawing.Printing 是否有明显的替代方案,我的(简短)谷歌搜索未能找到?打印要求应该很简单,我有 pdf 字节数组数据,我只需要以某种方式到达打印机)。
我意识到我可以将假脱机程序转换为控制台应用程序,然后从计划任务运行它,但 Windows 服务模型似乎只需安装和忘记就更简单(它注定要用于 PC 下一个到仓库中的打印机)
任何有用的建议将不胜感激
【问题讨论】:
-
我一直在使用 System.Drawing.Printing 作为 ASP.NET Core 服务器。你试过使用这个库吗?当然,我还没有在 .NET Core 中编写过服务,所以我不太确定这是否会有所作为。
-
感谢 GN,但您的应用程序有 GUI 吗? System.Drawing.Printing 上的文档特别声明它不能可靠地用于 Windows 服务
-
我没有打印服务的 GUI。但是,我确实通过代码手动创建位图,然后将其作为打印作业发送。 (用于二维码打印)
标签: c# pdf .net-core printing windows-services