我知道过去曾提出过类似的问题,但它们似乎是大约五年前发生的,并且想知道是否有更多相关信息。
我有以下代码,在作为桌面应用程序运行时效果很好:
var printServer = new PrintServer();
var printerQueues = printServer.GetPrintQueues();
var printer = printerQueues.FirstOrDefault(x => x.Name.Equals(sPrinter));
if (printer != null)
{
try
{
printer.AddJob("Printing test file", sLoc, false);
printJobSuccess = true;
}
catch (Exception)
{
// Log print fail
}
}
但是,当我将它构建到Windows服务时,它不会运行。与此问题(Xps printing from windows service)类似,我也尝试过Aspose,但这也不起作用。
我还尝试使用Aspose.Words和XpsPrint API进行打印(请参阅:http://www.aspose.com/docs/display/wordsnet/How+to++Print+a+Document+on+a+Server+via+the+XpsPrint+API) - 已于2015年11月14日更新,并为Windows服务应用程序提供了一种打印XPS文件的方法。见下文:
using (Stream stream = new FileStream(sLoc, FileMode.Open, FileAccess.Read))
{
XpsPrintHelper.Print(stream, sPrinter, "Printing test file", true);
}
我看到很多人评论说他们仍然在寻找解决方案。有没有人实现它或知道解决方法/这样做的方式?或者我做错了什么?