Я хочу надрукувати HTML із веб-служби C #. Керування веб-браузером є надмірним і погано функціонує в сервісному середовищі, а також не працює добре в системі з дуже жорсткими обмеженнями безпеки. Чи існує якась безкоштовна .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();
}
Це чудово працює при виклику з потоків типу інтерфейсу, але нічого не відбувається при виклику з потоку службового типу. Зміна Print()в ShowPrintPreviewDialog()врожайності наступне повідомлення про помилку сценарію IE:
Помилка:
dialogArguments.___IE_PrintTypeнуль або не об’єкт.URL:
res://ieframe.dll/preview.dlg
І з’являється невелике порожнє діалогове вікно попереднього перегляду друку.