Chr*_*org 21 .net c# printing windows-services
我正在处理一个项目,涉及从另一个应用程序接收消息,格式化该消息的内容,并将其发送到打印机.选择的技术是C#windows服务.我想,输出可以称为报告,但不需要报告引擎.一个简单的模板引擎,如StringTemplate,甚至XSLT输出HTML都可以.我遇到的问题是找到一种从服务中打印此类输出的免费方法.因为它似乎认为它会工作,我在一个工作原型使用微软的RDLC,填充本地报表,然后使其作为一个图像到内存流,我会再打印.问题是:
有没有人不得不像这样远程做任何事情?有什么建议?我已经发布了一个问题有关打印HTML无需用户输入,并就浪费约3天后,我来,它不能做的结论,至少不与任何免费提供的工具.
所有帮助表示赞赏.
编辑:我们在.NET框架的2.0版本.
从Windows服务打印真的很痛苦.它似乎有效......有时候......但最后它不时会出现异常情况或没有任何明确原因.这真的没有希望了.在官方方面,它甚至没有得到任何解释的支持,也没有任何替代解决方案的建议.
最近,我遇到了这个问题,经过几次不成功的试验和试验后,我终于找到了两个可行的解决方案:
我做到了 这是A*s的痛苦.问题是打印需要GDI引擎到位,这通常意味着您必须拥有桌面,只有在您登录时才会加载.如果您尝试从服务器上的服务执行此操作,那么你通常没有登录.
因此,首先您不能作为普通服务用户运行,而是作为具有交互式登录权限的真实用户运行.然后你必须调整服务注册表项(我忘了现在如果你真的感兴趣的话,必须找到我今晚可以做的代码).最后,你必须祈祷.
您最大的长期头痛将是打印驱动程序.如果您在没有登录用户的情况下作为服务运行,则某些打印驱动程序会不时弹出对话框.打印机墨粉用完后会发生什么?还是没纸了?驱动程序可能会弹出一个永远不会看到的对话框,并因为没有人登录而占用打印机队列!
要回答您的第一个问题,根据数据,这可能相当简单。我们有各种基于服务的应用程序,可以完全满足您的要求。通常,我们解析传入的文件并在其周围包裹我们自己的 Postscript 或 PCL。如果您的布局相当简单,那么您可以使用一些非常基本的 PCL 代码将其包装起来,以提供您想要的字体/打印布局(我很乐意在此离线为您提供一些指导)。
如果您有打印就绪文件,您可以将其发送到共享的 UNC 打印机、直接发送到本地安装的打印机,甚至发送到设备的 IP(RAW 或 LPR 类型数据)。
但是,如果您要使用 PDF 路径,最简单的方法是将 PDF 输出发送到支持直接 PDF 打印的打印机(现在很多都支持)。在这种情况下,您只需将 PDF 发送到设备并打印出来。
另一种选择是启动Ghostscript,它应该可以免费满足您的需要(检查许可,因为它们有几个不同的版本、一些 GNU、一些 GPL 等)并使用它的内置打印功能或简单地转换为 Postscript 并发送到装置。我已经在服务应用程序中多次使用 Ghostscript,但不是一个超级粉丝,因为您基本上会掏出并执行命令行应用程序来进行转换。话虽如此,它是一个稳定的应用程序,它确实容易优雅地失败
| 归档时间: |
|
| 查看次数: |
15301 次 |
| 最近记录: |