Chcę wydrukować HTML z usługi internetowej C#. Kontrola przeglądarki internetowej jest przesadna i nie działa dobrze w środowisku usługowym, ani nie działa dobrze w systemie z bardzo wąskimi ograniczeniami bezpieczeństwa. Czy istnieje jakaś bezpłatna biblioteka .NET
, która obsługuje drukowanie podstawowej strony HTML? Oto kod, który mam do tej pory, który nie działa poprawnie.Jak wydrukować dokument HTML z usługi internetowej?
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();
}
Działa to poprawnie, gdy jest wywoływane z wątków typu UI, ale nic się nie dzieje po wywołaniu z wątku typu usługi. Zmiana Print()
do ShowPrintPreviewDialog()
daje następujący błąd skryptu IE:
Error: 'dialogArguments.___IE_PrintType' is null or not an object
URL: res://ieframe.dll/preview.dlg
i pojawia się pusta dialogowe podgląd wydruku.
Proszę wybrać najlepszą odpowiedź, dzięki. – mruanova
@mruanova Żadna z odpowiedzi nie działała na ostatnią próbowałem ich. Jeśli masz coś, co działa, daj nam znać. –