【发布时间】:2010-09-05 05:41:35
【问题描述】:
我想从 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
然后会出现一个小的空白打印预览对话框。
【问题讨论】:
-
@mruanova 上次我尝试的答案都没有。如果您有什么可行的方法,请告诉我们。
-
我知道这在 08 年被认为是一个很好的问题,但现在它已经离题了。
-
@Joshua 怎么样?
标签: c# html web-services printing