Я хочу напечатать HTML с веб-службы C#. Элемент управления веб-браузером является излишним, и он плохо функционирует в среде обслуживания, а также не работает в системе с очень жесткими ограничениями безопасности. Есть ли какая-нибудь бесплатная библиотека .NET
, которая будет поддерживать печать основной HTML-страницы? Вот код, который у меня есть до сих пор, который работает неправильно.Как распечатать документ 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 ошибка сценария:
Error: 'dialogArguments.___IE_PrintType' is null or not an object
URL: res://ieframe.dll/preview.dlg
И появляется небольшое пустое диалоговое окно предварительного просмотра печати.
Пожалуйста, выберите лучший ответ, спасибо. – mruanova 2017-08-22 22:26:15
@mruanova Ни один из ответов не работал, я пробовал их. Если у вас есть что-то, что работает, сообщите нам об этом. – 2017-09-23 20:49:05