Como imprimir imagens de fundo aplicadas em CSS com controle WebBrowser
-
09-06-2019 - |
Pergunta
Estou usando o controle webbrowser no winforms e descobri agora que as imagens de fundo que aplico com css não estão incluídas nas impressões.
Existe uma maneira de fazer o navegador imprimir também o plano de fundo do documento exibido?
Editar:Como queria fazer isso programaticamente, optei por esta solução:
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);
Outra maneira de lidar com isso pode ser apenas ler o valor e notificar o usuário para ajustá-lo antes de imprimir.Devo concordar que ajustar o registro como esse não é uma boa prática, por isso estou aberto a sugestões.
Obrigado por todos os seus comentários
Solução
Se você for alterar uma configuração importante do sistema, primeiro leia a configuração atual e restaure-a quando terminar.
Eu considero isso muito mal pratique em primeiro lugar, mas se você precisar fazê-lo, seja gentil.
Registry.LocalMachine
Além disso, tente mudar LocalUser
em vez de LocalMachine
- dessa forma, se o seu aplicativo travar (e travará), você confundirá apenas o usuário, e não todos que usam a máquina.
Outras dicas
Outra chave de registro seria:Hkey_current_user software Microsoft Internet Explorer PageSetup Print_background hkey_local_machine software microsoft Internet Explorer PageSetup Print_background
A chave HKCU correspondente para esta configuração é:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Print_Background
Por padrão, o navegador não imprime nenhuma imagem de fundo.
No Firefox
* File > Page Setup > Check Off "Print Background"
* File > Print Preview
No IE
* Tools > Internet Options > Advanced > Printing
* Check Off "Print Background Images and Colors"
Na ópera
* File > Print Options > Check Off "Print Page Background"
* File > Print Preview (You may have to scroll down/up to see it refresh)
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;