我一直在研究一种从我的网络服务器提交打印作业的方法。
我想要做的是向 pdf 呈现一个动作,然后将 pdf 提交到服务器上的默认打印机。
这里的代码几乎可以工作
public JsonResult Print(String JobName, String TargetAction, String TargetController)
{
var job = LocalPrintServer.GetDefaultPrintQueue().AddJob(JobName);
var printStream = job.JobStream;
try
{
var pdfResult = new UrlAsPdf(Url.Action(TargetAction, TargetController, ControllerContext.RouteData));
var binary = pdfResult.BuildPdf(this.ControllerContext);
printStream.Write(binary, 0, binary.Length);
printStream.Close();
}
catch (Exception e)
{
return Json(new { Success = false, Message = e.Message });
}
return Json(new { Success = true });
}
但是一旦调用 .Close,该作业就会从打印机队列中删除。我正在使用 Rotativa 生成 pdf。
根据位于此处的示例http://msdn.microsoft.com/en-us/library/ms552913.aspx似乎是正确的 但我怀疑在打印机假脱机完成之前删除数据存在问题。
有人有建议或可行的解决方案吗?