2008-09-07 23 views
3

J'utilise le contrôle webbrowser dans Winforms et découvre maintenant que les images d'arrière-plan que j'applique avec css ne sont pas incluses dans les impressions.Comment imprimer des images d'arrière-plan appliquées css avec le contrôle WebBrowser

Existe-t-il un moyen de faire en sorte que le navigateur Web imprime également l'arrière-plan du document affiché?

Edit: Depuis que je voulais faire programatically, j'ai opté pour cette solution:

using Microsoft.Win32; 

... 

RegistryKey regKey = Registry.CurrentUser 
        .OpenSubKey("Software") 
        .OpenSubKey("Microsoft") 
        .OpenSubKey("Internet Explorer") 
        .OpenSubKey("Main"); 

//Get the current setting so that we can revert it after printjob 
var defaultValue = regKey.GetValue("Print_Background"); 
regKey.SetValue("Print_Background", "yes"); 

//Do the printing 

//Revert the registry key to the original value 
regKey.SetValue("Print_Background", defaultValue); 

Une autre façon de gérer cela pourrait être juste lire la valeur, et informer l'utilisateur de régler lui-même auparavant impression. Je suis d'accord pour dire que modifier le registre comme cela n'est pas une bonne pratique, alors je suis ouvert à toute suggestion.

Merci pour tous vos commentaires

Répondre

1

Si vous allez aller modifier un paramètre important du système, assurez-vous d'abord lire le réglage actuel et le restaurer lorsque vous avez terminé.

Je considère ce très mauvais pratique en premier lieu, mais si vous devez le faire alors être gentil.

Registry.LocalMachine 

Aussi, essayez de changer LocalUser au lieu de LocalMachine - de cette façon si votre application se bloque (et il), alors vous seul l'utilisateur confondu, pas tout le monde qui utilise la machine.

0

Par défaut, le navigateur n'imprime pas les images d'arrière-plan du tout.

Dans Firefox

* File > Page Setup > Check Off "Print Background" 
* File > Print Preview 

Dans IE

* Tools > Internet Options > Advanced > Printing 
* Check Off "Print Background Images and Colors" 

Dans Opera

* File > Print Options > Check Off "Print Page Background" 
* File > Print Preview (You may have to scroll down/up to see it refresh) 
1

La clé HKCU correspondante pour ce paramètre est: HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Main \ Print_Background

2

Une autre clé de Registre serait: HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ PageSetup \ Print_Background HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Internet Explorer \ PageSetup \ Print_Background

0
var sh = new ActiveXObject("WScript.Shell"); 
key = "HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Main\\Print_Background"; 
var defaultValue = sh.RegRead(key); 
sh.RegWrite(key,"yes","REG_SZ"); 
document.frames['detailFrame'].focus(); 
document.frames['detailFrame'].print(); 
sh.RegWrite(key,defaultValue,"REG_SZ"); 
return false;