2012-09-20 25 views
7

Soy desarrollador web y casi nunca trabajo con diseño, pero me han dado este error que estoy tratando de corregir.Las imágenes no se muestran al imprimir Vista previa (o Imprimir) en IE/Chrome/Firefox

Algunas imágenes aparecen correctamente cuando imprimo/visualizo la página de vista previa de impresión, pero otras no. La diferencia clave que puedo ver es que las imágenes que no aparecen son etiquetas de tramo con la imagen aplicada en css, mientras que las imágenes que funcionan usan la etiqueta img.

Éstos son ejemplos del HTML:

Span con "icono" nacimiento no lo hace pantalla:

<li class="media"> 
    <div class="img"> 
     <div class="h2 mtm">1889</div> 
     <span class="timeline-icon icon-birth"></span> 
    </div> 
    <div class="bd"> 
     <h3 class="profile-subtitle mts">Born in ?</h3> 
     <p class="deemphasis mbn"> 
     <a href="/search/results/bmdindexedbirths/bibby/elizabeth%20?yearofbirth=1889">Search  for Birth Record</a> 
     </p> 
    </div> 
</li> 

Image.gif hace pantalla:

<li class="media"> 
    <div class="img"> 
     <div class="h6"> 
      <strong>Spouse</strong></div> 
      <img src="image.gif" alt="" class="person-thumb dropshadow" /> 
     </div> 
    <div class="bd"> 
     <p class="mbn">Husband</p> 
     <h3 class="profile-subtitle"> 
      <a href="path">Thomas&nbsp;<strong>Name</strong></a> 
     </h3> 
     <p class="mbn">?&#45;?</p> 
    </div> 
</li> 

En algunos buscadores se ve bien en la vista previa pero no se imprime, en otros no y aún no impresión.

¡Gracias de antemano!

+1

Las imágenes no se imprimieron como si fueran imágenes de fondo y los navegadores se configuraron para no imprimirlas. Esto se puede cambiar manualmente en algunos navegadores. La solución consistía en utilizar etiquetas html img en lugar de span. – IntoTheBlue

Respuesta

9

Tuve el mismo problema hace más de dos meses. Tenía un botón que redirigía a los usuarios a una página para imprimir y luego activé el cuadro de diálogo de impresión utilizando Javascript.

El problema fue que los navegadores no esperaron hasta que se descargaron las imágenes especificadas en el fondo de CSS.

Pongo tiempo de espera antes de activar el diálogo de impresión para dar tiempo al navegador para descargar imágenes. Este enfoque no es confiable ya que nadie tiene velocidad de descarga constante y abriría el cuadro de diálogo de impresión antes de que las imágenes se descarguen a los usuarios con una conexión a Internet muy lenta.

Al final, utilicé etiquetas HTML img para incrustar imágenes en mi página y jQuery para activar el cuadro de diálogo de impresión cuando se descargó la última imagen.

+2

Resultó que las imágenes no se mostraban en mi caso, ya que el navegador predeterminado era no imprimir imágenes de fondo. Esto se puede configurar manualmente en algunos navegadores, pero no en todos. La solución fue usar etiquetas HTML img. – IntoTheBlue

0

crea una hoja de estilos de impresión, pon tu lapso de display: block

4

Es necesario poner retraso antes de la impresión. Hay un error nativo en cromo. Código haría, conforme a: -

function PrintDiv(data) { 
    var mywindow = window.open(); 
    var is_chrome = Boolean(mywindow.chrome); 
    mywindow.document.write(data); 

    if (is_chrome) { 
    setTimeout(function() { // wait until all resources loaded 
     mywindow.document.close(); // necessary for IE >= 10 
     mywindow.focus(); // necessary for IE >= 10 
     mywindow.print(); // change window to winPrint 
     mywindow.close(); // change window to winPrint 
    }, 250); 
    } else { 
     mywindow.document.close(); // necessary for IE >= 10 
     mywindow.focus(); // necessary for IE >= 10 

     mywindow.print(); 
     mywindow.close(); 
    } 

    return true; 
} 
1

Sólo tiene que añadir los estilos a continuación para hacer que funcione img {max-width: 100%; height: auto;}

Es el ancho de la imagen que se establece en 0 en la impresión que está causando el problema.

Cuestiones relacionadas