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

Foi útil?

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; 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top