我想从 C# Web 服务中打印 HTML。Web 浏览器控件过于复杂,在服务环境下无法很好地运行,而且在有严格安全限制的系统上也无法很好地运行。是否有任何一种免费的 .NET 库可以支持打印基本的 HTML 页面?以下是到目前为止我所拥有的代码,它无法正常运行。
public void PrintThing(string document)
{
if (Thread.CurrentThread.GetApartmentState() != ApartmentState.STA)
{
Thread thread =
new Thread((ThreadStart) delegate { PrintDocument(document); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
else
{
PrintDocument(document);
}
}
protected void PrintDocument(string document)
{
WebBrowser browser = new WebBrowser();
browser.DocumentText = document;
while (browser.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
browser.Print();
}
当从UI类型线程调用时,这可以正常工作,但从服务类型线程调用时没有任何反应。将Print()
更改为 ShowPrintPreviewDialog()
会产生以下IE脚本错误:
Error:
dialogArguments.___IE_PrintType
为空或不是对象。URL:
res://ieframe.dll/preview.dlg
并且一个小的空打印预览对话框出现。