Soy nuevo aquí en esta compañía y tenemos un producto que utiliza millas de CSS. Estoy intentando hacer una hoja de estilo imprimible para nuestra aplicación, pero estoy teniendo problemas con background-color
en @media print
.
@media print {
#header{display:none;}
#adwrapper{display:none;}
td {
border-bottom: solid;
border-right: solid;
background-color: #c0c0c0;
}
}
Todo lo demás funciona, puedo modificar los bordes y demás, pero background-color
no se verán en la impresión. Ahora entiendo que es posible que no puedan responder a mi pregunta sin más detalles. Tenía curiosidad por saber si alguien tenía este problema, o algo similar, antes.
css
media-queries
Weston Watson
fuente
fuente
@media print
consulta que elimina los colores de fondo de las tablas (por ejemplo, rayas).Respuestas:
SI un usuario tiene "Imprimir colores e imágenes de fondo" desactivado en su configuración de impresión, ningún CSS lo anulará, así que siempre tenga en cuenta eso. Esta es una configuración predeterminada .
Una vez que esté configurado para que imprima los colores de fondo y las imágenes, lo que tenga allí funcionará.
Se encuentra en diferentes puntos. En IE9beta se encuentra en Imprimir-> Opciones de página en Opciones de papel
En Firefox, se encuentra en la pestaña Configuración de página -> [Formato y opciones] en Opciones.
fuente
*{ color-adjust: exact; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
Para habilitar la impresión en segundo plano en Chrome:
fuente
color-adjust
en su lugar.Entendido:
CSS:
Funciona para todas las cajas, incluidas las celdas de la tabla.
fuente
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#fffada', endColorstr='#fffada')"; /* IE8 */
Si desea que sus imágenes de sprite sean visibles, use la técnica img / clip css-tricks.com/css-sprites-with-inline-images , que le dará imágenes en IE9 y FF ( aunque no IE8)Prueba esto, funcionó para mí en Google Chrome:
fuente
-webkit-print-color-adjust: exact;
solois Not enough
tienes que usar!important
con el atributoEsta es la vista previa de impresión en Chrome después de agregar
!important
a cada unobackground-color
ycolor
agregué cada etiquetay esta es la vista previa de impresión en Chrome antes de agregar
!important
ahora, para saber cómo
inject
!important
dividir el estilo, mira esta respuesta No puedo inyectar un estilo con una regla "! importante"fuente
Dos soluciones que funcionan (al menos en Chrome moderno, no han probado más allá):
fuente
color-adjust
o la variante webkit, de hecho no necesito la regla importante.Si está buscando crear páginas "para imprimir", le recomiendo agregar "! Important" a su CSS de impresión @media. Esto alienta a la mayoría de los navegadores a imprimir sus imágenes de fondo, colores, etc.
EJEMPLOS
fuente
Hay otro truco que puede hacer sin activar la opción de borde de impresión mencionada en otras publicaciones. Como se imprimen los bordes , puede simular colores de fondo sólidos con este truco:
Actívelo agregando la clase a su elemento:
Aunque esto necesita un código adicional y un cuidado especial para hacer visibles los colores de fondo, es la única solución que conozco.
Tenga en cuenta que este truco no funcionará en elementos que no sean
display: block;
odisplay: table-cell;
, por ejemplo,<table class="your-background">
y<tr class="your-background">
no funcionará.Usamos esto para obtener colores de fondo en todos los navegadores (aún así, se requiere IE9 +).
fuente
Para Chrome, he usado algo como esto y funcionó para mí.
Dentro de la etiqueta del cuerpo,
O para un elemento en particular, digamos que si tiene una tabla y desea llenar un td, es decir, una celda,
fuente
A pesar de que el
!important
uso generalmente está mal visto, este es el código ofensivo en elbootstrap.css
que evita que se impriman las filas de la tablabackground-color
.Supongamos que está tratando de diseñar el siguiente HTML:
Para anular este CSS, coloque la siguiente regla (más específica) en su hoja de estilo:
Esto funciona porque la regla es más específica que el valor predeterminado de arranque.
fuente
Encontré este problema, porque tuve un problema similar al intentar generar un PDF a partir de una salida html en Google Apps Script, donde los colores de fondo tampoco se "imprimen".
Las soluciones
-webkit-print-color-adjust:exact;
y!important
, por supuesto, no funcionaron, pero lobox-shadow: inset 0 0 0 1000px gold;
hicieron ... gran truco, muchas gracias :)fuente
Pensé que agregaría una ayuda reciente y relevante de 2015 de una experiencia css impresa reciente.
Pude imprimir fondos y colores independientemente de la configuración del cuadro de diálogo de impresión.
Para hacer esto, tuve que usar una combinación de ! Important & -webkit-print-color-ajustar: exacto! Important para que el fondo y los colores se impriman correctamente.
Además, al declarar los colores, descubrí que las áreas más rebeldes necesitaban una definición directamente a su objetivo. Por ejemplo:
Y tu CSS:
fuente
Probado y funcionando sobre Chrome, Firefox, Opera y Edge para 2016/10. Debería funcionar en cualquier navegador y siempre debería verse como se esperaba.
Ok, hice un pequeño experimento entre navegadores para imprimir colores de fondo. ¡Solo copia, pega y disfruta!
Aquí hay una página HTML imprimible completa para bootstrap:
fuente
La mejor "solución" que he encontrado es proporcionar un botón o enlace "Imprimir" prominente que aparece un pequeño cuadro de diálogo que explica audaz, breve y concisamente que necesitan ajustar la configuración de la impresora (con una instrucción de viñeta ABC 123) para habilitar el fondo e impresión de imágenes. Esto ha sido muy exitoso para mí.
fuente
En algunos casos (bloques sin contenido, pero con fondo) se puede anular utilizando bordes, individualmente para cada bloque.
Por ejemplo:
fuente
Puede usar la etiqueta
canvas
y "dibujar" el fondo, que funciona en IE9, Gecko y Webkit.fuente
Si no le importa usar una imagen en lugar de un color de fondo (o posiblemente una imagen con su color de fondo), la solución a continuación me ha funcionado en Firefox, Chrome e incluso IE sin anulaciones. Establezca la imagen en algún lugar de la página y escóndela hasta que el usuario imprima.
El html de la página con la imagen de fondo.
El css
}
fuente
!important
valor en cada atributo en mi clase que luego lo hizo funcionar.No , no establecer el
background-color
interior de la hoja de estilos de impresión. Simplemente configure el atributo en el archivo CSS normal y funciona bien :)Vea este ejemplo: La última plantilla HTML de impresión con encabezado y pie de página
Demostración: la última plantilla HTML de impresión con demostración de encabezado y pie de página
fuente
Funciona en Chrome y Edge
fuente