我想从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’ is null or not an object
URL: res://ieframe.dll/preview.dlg
将出现一个小的空白打印预览对话框。