Je veux imprimer du HTML à partir d'un service web C#. Le contrôle du navigateur Web est excessif et ne fonctionne pas bien dans un environnement de service, ni sur un système soumis à des contraintes de sécurité très strictes. Existe-t-il une sorte d'outil gratuit .NET
qui permettra l'impression d'une page HTML de base ? Voici le code que j'ai jusqu'à présent, qui ne fonctionne pas correctement.
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();
}
Cela fonctionne bien lorsqu'il est appelé à partir de threads de type interface utilisateur, mais rien ne se passe lorsqu'il est appelé à partir d'un thread de type service. Modification de Print()
à ShowPrintPreviewDialog()
produit l'erreur IE script suivante :
Erreur :
dialogArguments.___IE_PrintType
est nul ou n'est pas un objet.URL :
res://ieframe.dll/preview.dlg
Et une petite boîte de dialogue vide d'aperçu avant impression apparaît.
0 votes
@mruanova Aucune des réponses n'a fonctionné la dernière fois que je les ai essayées. Si vous avez quelque chose qui fonctionne, faites-le nous savoir.
0 votes
Je sais que cette question était considérée comme pertinente en 2008, mais elle est hors sujet maintenant.
0 votes
Joshua, comment ça ?
0 votes
Voir meta.stackoverflow.com/questions/251134/