【发布时间】:2012-04-11 13:22:50
【问题描述】:
我有一些使用System.Drawing.Printing 命名空间打印文档的代码。现在需要将其移动到 Windows 服务中。 The documentation 表示这是不可能的,这将支持我迄今为止的发现(因为它不起作用)。我假设我可以通过使用 System.Printing 命名空间来实现它。
这是我目前的代码:
private Metafile myDoc;
myDoc = GetEmfDoc();
PrintServer ps = new PrintServer("\\server1\printer1");
EnumeratedPrintQueueTypes[] flags = { EnumeratedPrintQueueTypes.Local };
PrintQueueCollection queues = ps.GetPrintQueues(flags);
PrintQueue pq = queues.First<PrintQueue>();
pq.AddJob("JobName", ?);
所以我想将myDoc 传递给pq.AddJob(),但这似乎是不可能的。使用System.Drawing.Printing 可以在PrintDocument.PrintPage 事件中简单地逐页呈现。
我正在尝试做的事情是否可行,如果可以,有人能指出我正确的方向吗?
【问题讨论】:
-
您是否尝试将服务配置为以“本地系统帐户”登录+选中“允许服务与桌面交互”框?
-
到目前为止,这是我最接近的解决方案。如果设置了此标志,则使用 System.Drawing.Printing.PrintDocument 有效,并且不调用 PrintSettings.IsValid。
标签: c# .net-3.5 printing windows-services system.printing