我想从 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 脚本错误:
错误:
dialogArguments.___IE_PrintType
是否为空对象。网址:
res://ieframe.dll/preview.dlg
并出现一个小的空打印预览对话框。