Eu sou novo aqui nesta empresa e temos um produto que usa quilômetros de css. Eu estou tentando fazer uma folha de estilo de impressão para a nossa aplicação, mas estou tendo problemas com background-color
no @media print
.
@media print {
#header{display:none;}
#adwrapper{display:none;}
td {
border-bottom: solid;
border-right: solid;
background-color: #c0c0c0;
}
}
Tudo o resto funciona, eu posso modificar as bordas e coisas do tipo, mas background-color
não aparecem na impressão. Agora entendo que vocês podem não ser capazes de responder à minha pergunta sem mais detalhes. Eu estava curioso para saber se alguém já teve esse problema ou algo semelhante antes.
css
media-queries
Weston Watson
fonte
fonte
@media print
consulta que remove as cores de fundo das tabelas (por exemplo, faixas).Respostas:
Se um usuário tiver "Imprimir cores e imagens de plano de fundo" desativadas nas configurações de impressão, nenhum CSS substituirá isso, portanto, sempre leve em conta isso. Esta é uma configuração padrão .
Uma vez definido, para imprimir cores e imagens de plano de fundo, o que você tem lá funcionará.
Pode ser encontrada em diferentes locais. No IE9beta, ele é encontrado em Imprimir-> Opções da página em Opções de papel
No FireFox, está na Configuração da página -> guia [Formato e opções] em Opções.
fonte
*{ color-adjust: exact; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
Para ativar a impressão em segundo plano no Chrome:
fonte
color-adjust
.Entendi:
CSS:
Funciona para todas as caixas - incluindo células da tabela !!!
fonte
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#fffada', endColorstr='#fffada')"; /* IE8 */
Se você deseja que suas imagens de sprite fiquem visíveis, use a técnica img / clip css-tricks.com/css-sprites-with-inline-images , que fornecerá imagens no IE9 e FF ( não IE8 embora)Tente isso, funcionou para mim no Google Chrome:
fonte
-webkit-print-color-adjust: exact;
sozinhois Not enough
você tem que usar!important
com o atributoesta é a pré-visualização da impressão no chrome depois de eu adicionar
!important
a cadabackground-color
ecolor
atribuir em cada tage isso está imprimindo a visualização no chrome antes de adicionar
!important
Agora, para saber como
inject
!important
dividir o estilo, verifique esta resposta. Não consigo injetar um estilo com uma regra "! important"fonte
Duas soluções que funcionam (pelo menos no Chrome moderno - ainda não foram testadas):
fonte
color-adjust
ou a variante do webkit, não preciso de fato da regra importante.Se você deseja criar páginas "amigáveis para a impressora", recomendo adicionar "! Important" ao seu CSS de impressão do @media. Isso incentiva a maioria dos navegadores a imprimir suas imagens de fundo, cores etc.
EXEMPLOS:
fonte
Há outro truque que você pode fazer sem ativar a opção de borda de impressão mencionada em outras postagens. Como as bordas são impressas, você pode simular cores de fundo sólidas com este hack:
Ative-o adicionando a classe ao seu elemento:
Embora isso precise de um código extra e de alguns cuidados extras para tornar as cores de fundo visíveis, ainda é a única solução conhecida por mim.
Observe que esse hack não funcionará em outros elementos que não sejam
display: block;
oudisplay: table-cell;
, por exemplo,<table class="your-background">
e<tr class="your-background">
não funcionará.Usamos isso para obter cores de plano de fundo em todos os navegadores (ainda, é necessário o IE9 +).
fonte
Para o chrome, usei algo assim e funcionou para mim.
Dentro da tag body,
Ou, para um elemento em particular, digamos que se você possui uma tabela e deseja preencher um td, ou seja, uma célula,
fonte
Apesar do
!important
uso geralmente desaprovado, este é o código incorreto nobootstrap.css
qual impede que as linhas da tabela sejam impressasbackground-color
.Vamos supor que você esteja tentando estilizar o seguinte HTML:
Para substituir esse CSS, coloque a seguinte regra (mais específica) em sua folha de estilo:
Isso funciona porque a regra é mais específica que o padrão de autoinicialização.
fonte
Encontrei esse problema, porque tive um problema semelhante ao tentar gerar um PDF a partir de uma saída html no Google Apps Script, onde as cores de plano de fundo também não são "impressas".
As soluções
-webkit-print-color-adjust:exact;
e!important
, claro, não funcionaram, mas obox-shadow: inset 0 0 0 1000px gold;
funcionou ... ótimo hack, muito obrigado :)fonte
Pensei em adicionar uma ajuda recente e relevante de 2015 a partir de uma experiência recente em impressão CSS.
Conseguiu imprimir planos de fundo e cores, independentemente das configurações da caixa de diálogo de impressão.
Para fazer isso, tive que usar uma combinação de ! Important & -webkit-print-color-Adjust: exato! Important para obter plano de fundo e cores para imprimir corretamente.
Além disso, ao declarar cores, descobri que as áreas mais teimosas precisavam de uma definição diretamente para o seu alvo. Por exemplo:
E seu CSS:
fonte
Testado e funcionando no Chrome, Firefox, Opera e Edge até 2016/10. Deve funcionar em qualquer navegador e sempre deve ter a aparência esperada.
Ok, fiz um pequeno experimento em vários navegadores para imprimir cores de fundo. Basta copiar, colar e divirta-se!
Aqui está uma página HTML imprimível completa para inicialização:
fonte
A melhor "solução" que encontrei é fornecer um botão ou link destacado "Imprimir", que abre uma pequena caixa de diálogo explicando de forma audaciosa, breve e concisa que eles precisam ajustar as configurações da impressora (com uma instrução de ponto de marcador ABC 123) para permitir o fundo e impressão de imagens. Isso tem sido muito bem sucedido para mim.
fonte
Em alguns casos (blocos sem nenhum conteúdo, mas com fundo), ele pode ser substituído usando bordas, individualmente para cada bloco.
Por exemplo:
fonte
Você pode usar a tag
canvas
e "desenhar" o plano de fundo, que funciona no IE9, Gecko e Webkit.fonte
Se você não se importa em usar uma imagem em vez de uma cor de fundo (ou possivelmente uma imagem com sua cor de fundo), a solução abaixo funcionou para mim no FireFox, Chrome e até no IE sem nenhum problema. Defina a imagem em algum lugar da página e oculte-a até que o usuário imprima.
O html na página com a imagem de plano de fundo
O CSS
}
fonte
!important
valor em cada atributo da minha classe, que o fez funcionar.Você não definir a
background-color
interior do estilo de impressão. Basta definir o atributo no arquivo css normal e ele funciona bem :)Confira este exemplo: O melhor modelo HTML de impressão com cabeçalho e rodapé
Demo: o melhor modelo de impressão em HTML com demonstração de cabeçalho e rodapé
fonte
Funciona no Chrome e Edge
fonte