Estou tentando imprimir uma página. Nessa página, dei à tabela uma cor de fundo. Quando visualizo a visualização da impressão no chrome, não está assumindo a propriedade cor de fundo ...
Então, eu tentei esta propriedade:
-webkit-print-color-adjust: exact;
mas ainda não está mostrando a cor.
.vendorListHeading {
background-color: #1a4567;
color: white;
-webkit-print-color-adjust: exact;
}
<div class="bs-docs-example" id="soTable" style="padding-top: 10px;">
<table class="table" style="margin-bottom: 0px;">
<thead>
<tr class="vendorListHeading" style="">
<th>Date</th>
<th>PO Number</th>
<th>Term</th>
<th>Tax</th>
<th>Quote Number</th>
<th>Status</th>
<th>Account Mgr</th>
<th>Shipping Method</th>
<th>Shipping Account</th>
<th style="width: 184px;">QA</th>
<th id="referenceSO">Reference</th>
<th id="referenceSO" style="width: 146px;">End-User Name</th>
<th id="referenceSO" style="width: 118px;">End-User's PO</th>
<th id="referenceSO" style="width: 148px;">Tracking Number</th>
</tr>
</thead>
<tbody>
<tr class="">
<td>22</td>
<td>20130000</td>
<td>Jim B.</td>
<td>22</td>
<td>510 xxx yyyy</td>
<td>[email protected]</td>
<td>PDF</td>
<td>12/23/2012</td>
<td>Approved</td>
<td>PDF</td>
<td id="referenceSO">12/23/2012</td>
<td id="referenceSO">Approved</td>
</tr>
</tbody>
</table>
</div>
google-chrome
css
printing
webkit
ghost_dad
fonte
fonte
Respostas:
A propriedade CSS do Chrome
-webkit-print-color-adjust: exact;
funciona adequadamente.No entanto, garantir que você tenha o CSS correto para impressão pode ser complicado. Várias coisas podem ser feitas para evitar as dificuldades que você está tendo. Primeiro, separe todo o CSS impresso do CSS da tela. Isso é feito via
@media print
e@media screen
.Muitas vezes, apenas a configuração de um
@media print
CSS extra não é suficiente, porque você ainda tem todos os outros CSS incluídos ao imprimir também. Nesses casos, você só precisa conhecer a especificidade do CSS, pois as regras de impressão não vencem automaticamente contra as regras de CSS não impressas.No seu caso, o
-webkit-print-color-adjust: exact
está funcionando. No entanto, suasbackground-color
definições de cores e estão sendo superadas por outros CSS com maior especificidade.Embora eu não apóie o uso
!important
em praticamente nenhuma circunstância, as seguintes definições funcionam corretamente e expõem o problema:Aqui está o violino (e incorporado para facilitar a visualização da impressão).
fonte
Print preview failed.
mensagem no Chrome v47.0.2526.106Essa propriedade CSS é tudo que você precisa, funciona para mim ... Ao visualizar no Chrome, você tem a opção de vê-la em preto e branco ( Cor: Opções - Cor ou Preto e branco ); portanto, se você não tiver essa opção, Sugiro pegar essa extensão do Chrome e facilitar sua vida:
https://chrome.google.com/webstore/detail/print-background-colors/gjecpgdgnlanljjdacjdeadjkocnnamk?hl=en
O site que você adicionou no fiddle precisa disso em sua mídia de impressão em css (você só precisa adicioná-lo ...
a mídia imprime CSS no corpo:
ATUALIZAÇÃO OK, para que seu problema seja o bootstrap.css ... ele possui um CSS de impressão de mídia, assim como você ... você remove isso e isso deve lhe dar cor ... você precisa fazer o seu próprio ou ficar com bootstraps imprime css.
Quando clico em imprimir, vejo cores .... http://jsfiddle.net/rajkumart08/TbrtD/1/embedded/result/
fonte
@media print { body {margin:0; padding:0; line-height: 1.4em; word-spacing:1px; letter-spacing:0.2px; font: 12px Arial, Helvetica,"Lucida Grande", serif; color: #000;}....
Você precisa adicioná-lo lá ...O Chrome não renderiza a cor de fundo ou vários outros estilos ao imprimir se a configuração de gráficos de fundo estiver desativada.
Isso não tem nada a ver com css, @media ou especificidade. Provavelmente, você pode dar um jeito de resolvê-lo, mas a maneira mais fácil de fazer com que o chrome mostre a cor de fundo e outros gráficos é marcar corretamente essa caixa de seleção em Mais configurações.
fonte
Eu só precisava adicionar o
!important
atributo à marca de cor de fundo para que ela aparecesse, não precisava da parte do webkit:background-color: #f5f5f5 !important;
fonte
Se você estiver usando o bootstrap ou qualquer outro CSS de terceiros, especifique a tela de mídia apenas nela, para ter o controle do tipo de mídia de impressão em seus próprios arquivos CSS:
fonte
Seu CSS deve ser assim:
fonte
Para aqueles que usam o BOOTSTRAP.CSS, essa é a correção!
Eu tentei todas as soluções e elas não estavam funcionando ... até que descobri que o bootstrap.css tinha um super chato
@media print
que redefine todas as suas cores, cores de fundo, sombras, etc ...Portanto, remova esta seção do bootstrap.css (ou bootstrap.min.css)
Ou substitua esses valores no css da página que você deseja imprimir por conta própria
@media print
fonte
Use o seguinte na sua
@media print
folha de estilos.Aqui estão algumas coisas a serem observadas:
Veja meu violino para uma demonstração mais detalhada.
fonte
Tem certeza de que este é um problema de css? Existem algumas postagens no Google sobre esse problema: http://productforums.google.com/forum/#!category-topic/chrome/discuss-chrome/eMlLBcKqd2s
Pode estar relacionado ao processo de impressão. No safari, que também é webkit, há uma caixa de seleção para imprimir imagens e cores de plano de fundo na caixa de diálogo da impressora.
fonte
Se você estiver usando o IE, vá para a visualização de impressão (clique com o botão direito do mouse em documento -> visualização de impressão), vá para configurações e existe a opção "imprimir cores e imagens de plano de fundo", selecione essa opção e tente.
fonte
Há um estilo nos arquivos css de inicialização em @media print {* ,: after,: before ....} que possui estilos de cores e de fundo rotulados como important, que removem qualquer cor de fundo de qualquer elemento. Mate esses dois pedaços de CSS e ele funcionará.
O Bootstrap está tomando a decisão de execução de que você nunca deve ter nenhuma cor de fundo nas impressões; portanto, é necessário editar o css ou ter outro estilo importante que seja uma precedência mais alta. Bom trabalho de inicialização ...
fonte
Usei a resposta do purgatory101, mas tive problemas para manter todas as cores (ícones, planos de fundo, cores de texto etc ...), principalmente porque as folhas de estilo CSS não podem ser usadas com bibliotecas que alteram dinamicamente as cores do elemento DOM. Portanto, aqui está um script que altera os estilos do elemento (
background-colour
ecolour
) antes da impressão e apaga os estilos após a conclusão da impressão. É útil evitar escrever muito CSS em uma@media print
folha de estilo, pois funciona independentemente da estrutura da página.Há uma parte do script criada especialmente para manter a cor dos ícones do FontAwesome (ou qualquer elemento que use um
:before
seletor para inserir conteúdo colorido).JSFiddle mostrando o script em ação
Compatibilidade: funciona no Chrome, não testei outros navegadores.
E modifique a
window.print
função para definir os estilos antes de imprimir e redefini-los depois.A parte que encontra caminhos de ícones para criar CSS para: before elements é uma cópia desta resposta do SO
fonte
var
a partirwindow
do seu último trecho de código)Você também pode usar a
box-shadow
propriedadefonte
se você estiver usando o Bootstrap. basta usar esse código no seu arquivo css personalizado. O Bootstrap remove todas as suas cores na visualização de impressão.
fonte
Se você baixar o Bootstrap sem a opção "Estilos de mídia de impressão", não terá esse problema e não precisará remover o código "@media print" manualmente no seu arquivo bootstrap.css.
fonte
A melhor solução para isso, se você estiver usando o bootstrap, faça uma coisa e remova @media print {} todo o código dentro dele. e habilite gráficos de plano de fundo em mais configurações enquanto realiza a visualização da impressão.
fonte
Carrego duas vezes meu arquivo de origem css externo e altero a mídia = "tela" para mídia = "impressão" e todas as bordas da minha tabela foram mostradas
Tente o seguinte:
fonte