2011-05-19 3 views
0

Actuellement, je suis l'impression du contenu d'un WPF WebBrowser comme ceci:Impression de fond Couleurs de WPF WebBrowser

mshtml.IHTMLDocument2 doc = WebBrowser.Document as mshtml.IHTMLDocument2; 
doc.execCommand("Print", true, null); 

Mon contenu HTML a des tables avec des couleurs de fond. Actuellement, lorsque j'imprime le contenu, les couleurs d'arrière-plan ne s'impriment pas - tout est blanc uni. Existe-t-il un moyen de dire au WebBrowser d'imprimer les couleurs d'arrière-plan? En outre, cela entraîne toujours l'apparition d'une boîte de dialogue d'impression. Est-ce que quelqu'un sait ce que la commande est d'imprimer la boîte de dialogue de contenu-moins?

Merci beaucoup!

Répondre

1

En supposant que vous utilisez 'SHDocVw.WebBrowser', vous pouvez utiliser la commande ExecWB. Pour imprimer sans la boîte de dialogue, utilisez la constante OLECMDEXECOPT_PROMPTUSER (1). Vous pouvez également passer un modèle d'impression IE (juste un fichier HTML) pour plus de contrôle sur la façon dont la page est affichée.

Il est quelque chose comme ceci (extrait de this question MSDN)

browser.ExecWB(SHDocVw.OLECMDID.OLECMDID_PRINT, 
       SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, 
       "print_template.html", ref nullObject); 

Quant à l'arrière-plan, il semble être l'une des options que vous pouvez spécifier dans LayoutRect de modèle d'impression. Tous les paramètres de la boîte de dialogue d'impression sont stored in the registry, mais un modèle d'impression est préférable car il ne modifie pas les paramètres à l'échelle du système.

+1

Je n'étais pas. J'utilisais "System.Windows.Controls.WebBrowser" dans lequel l'utilisation d'ExecWB ne fonctionnerait pas. Il semble, après beaucoup de recherches, que l'impression sans un dialogue à partir d'un _WPF_ WebBrowser soit presque impossible à cause de son mauvais fonctionnement autour de WinForms WebBrowser. – JToland

+0

@JToland, merci pour la mise à jour, aussi malheureuse que cela puisse être. [Comment?] Avez-vous pu résoudre vos problèmes? –

+0

Pas vraiment. Je suis simplement passé à l'utilisation d'un contrôle WinForms WebBrowser et j'ai ensuite utilisé un peu de bidouille pour activer la boîte de dialogue (car un WinForms WebBrowser dans un contrôle Windows Forms Host n'obéit pas à l'ordre z). En fait, je ne prends juste pas une «image» de l'écran actuel, cache le WebBrowser, montre l'image à sa place, puis mets la boîte de dialogue par dessus pour qu'elle apparaisse comme la boîte de dialogue ouverte en haut de l'écran courant. – JToland