¿Cuál es la mejor manera de imprimir el contenido de un DIV?
javascript
jquery
html
printing
prueba de uso
fuente
fuente
Respuestas:
Ligeros cambios con respecto a la versión anterior: probado en CHROME
fuente
mywindow.document.write(data);
Agregue esto:mywindow.document.write('<script type="text/javascript">$(window).load(function() { window.print(); window.close(); });</script>');
Y elimine:mywindow.print();
ymywindow.close();
Creo que hay una mejor solución. Haga que su div para imprimir cubra todo el documento, pero solo cuando se imprima:
fuente
Aunque @gabe ha dicho esto , si está utilizando jQuery, puede usar mi
printElement
complemento.Hay una muestra aquí , y más información sobre el plugin aquí .
El uso es bastante sencillo, simplemente tome un elemento con un selector jQuery e imprímalo:
¡Espero que ayude!
fuente
Usando Jquery, simplemente use esta función:
Su botón de impresión se verá así:
Editar: si TIENE datos de formulario que necesita conservar, clonar no lo copiará, por lo que solo tendrá que tomar todos los datos del formulario y reemplazarlos después de la restauración de la siguiente manera:
fuente
el
es terrible, especialmente desde que utilizas jQ. Mucho mejor simplemente pasarselector
y deshacerse del código rígido#
el
. Creo que el comando de impresión se envía cuando se restaura el cuerpo.Desde aquí http://forums.asp.net/t/1261525.aspx
fuente
Solía
Bill Paetzke
responder para imprimir un div que contenía imágenes pero no funcionaba con Google Chromesolo necesitaba agregar esta línea
myWindow.onload=function(){
para que funcione y aquí está el código completoAdemás, si alguien solo necesita imprimir un div con ID, no necesita cargar jquery
aquí hay código javascript puro para hacer esto
espero que esto pueda ayudar a alguien
fuente
Esto imprimirá el
div
área que desea y volverá a establecer el contenido como estaba.printdivname
es eldiv
para ser impreso.fuente
Cree una hoja de estilo de impresión separada que oculte todos los demás elementos, excepto el contenido que desea imprimir. Marcarlo usando
'media="print"
cuando lo cargue:<link rel="stylesheet" type="text/css" media="print" href="print.css" />
Esto le permite tener una hoja de estilo completamente diferente cargada para impresiones.
Si desea forzar que aparezca el cuadro de diálogo de impresión del navegador para la página, puede hacerlo así al cargar usando JQuery:
$(function() { window.print(); });
o desencadenado por cualquier otro evento que desee, como que un usuario haga clic en un botón.
fuente
Creo que las soluciones propuestas hasta ahora tienen los siguientes inconvenientes:
He mejorado las soluciones anteriores. Aquí hay algo que he probado que funciona muy bien con los siguientes beneficios.
Puntos clave a tener en cuenta:
fuente
Creé un complemento para abordar este escenario. No estaba contento con los complementos, y me propuse hacer algo más extenso / configurable.
https://github.com/jasonday/printThis
fuente
La solución aceptada no estaba funcionando. Chrome estaba imprimiendo una página en blanco porque no estaba cargando la imagen a tiempo. Este enfoque funciona:
Editar: Parece que la solución aceptada se modificó después de mi publicación. ¿Por qué el voto negativo? Esta solución también funciona.
fuente
Sé que esta es una vieja pregunta, pero resolví este problema con jQuery.
CSS
fuente
Aunque la respuesta @BC fue la mejor para imprimir una sola página.
Pero puede ser útil imprimir varias páginas de tamaño A4 al mismo tiempo con Ctrl + P.
fuente
fuente
Aquí está mi complemento de impresión jquery
fuente
Si desea tener todos los estilos del documento original (incluidos los estilos en línea) puede utilizar este enfoque.
Implementación:
fuente
Nota: Esto funciona solo con sitios habilitados para jQuery
Es muy simple con este truco genial. Me funcionó en el navegador Google Chrome . Firefox no le permitirá imprimir en PDF sin un complemento.
La lógica es simple. Estamos creando una nueva etiqueta de script y adjuntándola frente a la etiqueta de cierre del cuerpo. Inyectamos una extensión de impresión jQuery en el HTML. Cambie myDivWithStyles con su propia ID de etiqueta Div. Ahora se encarga de preparar una ventana virtual imprimible.
Pruébalo en cualquier sitio. La única advertencia es que, a veces, el CSS escrito con engaño puede hacer que falten estilos. Pero obtenemos el contenido la mayoría de las veces.
fuente
En Opera, prueba:
fuente
Aquí hay una solución IFrame que funciona para IE y Chrome:
fuente
Creó algo genérico para usar en cualquier elemento HTML
Espero que esto ayude.
fuente
Modifiqué la respuesta de @BillPaetski para usar querySelector, agregar CSS opcional, eliminar la etiqueta H1 forzada y hacer que el título se especifique o extraiga opcionalmente de la ventana. Tampoco se imprime automáticamente y expone los elementos internos para que puedan cambiarse en la función de envoltura o como desee.
Los únicos dos vars privados son tmpWindow y tmpDoc, aunque creo que el acceso de título, css y elem puede variar, se debe suponer que todos los argumentos de la función son privados.
Código: Uso:fuente
<input>
elementos. ¿Cómo puedo usar esto, incluido lo que el usuario ha escrito?<input>
,<select>
,<textarea>
compontents para ser su valor de tiempo de ejecución. Hay alternativas, pero no es un problema con este script, sino un problema con el funcionamiento de los navegadores y la obtención deinnerHTML
propiedades de documentos con entradas, lienzo, etc..attr('value',)
. Incluso lo hice para textarea (agregando) y casillas de verificación (.attr('checked',)
). Lo siento si no estaba pensando lo suficiente sobre lo que estaba preguntando.El siguiente código copia todos los nodos relevantes a los que apunta el selector de consultas, copia sobre sus estilos como se ve en la pantalla, ya que faltarán muchos elementos principales utilizados para apuntar a los selectores CSS. Esto causa un poco de retraso si hay muchos nodos secundarios con muchos estilos.
Lo ideal sería tener una hoja de estilo de impresión lista, pero esto es para casos de uso donde no hay que insertar una hoja de estilo de impresión y desea imprimir como se ve en la pantalla.
Si copia los siguientes elementos en la consola del navegador en esta página, imprimirá todos los fragmentos de código en esta página.
fuente
Esta es una publicación muy antigua, pero aquí está una actualización de lo que hice con la respuesta correcta. Mi solución también usa jQuery.
El punto de esto es usar una vista de impresión adecuada, incluir todas las hojas de estilo para el formato adecuado y también ser compatible con la mayoría de los navegadores.
Más tarde, simplemente necesitas algo como esto:
Intentalo.
fuente
Igual que la mejor respuesta, en caso de que necesite imprimir la imagen como lo hice yo:
En caso de que quiera imprimir la imagen:
fuente
load
evento en la ventana emergente. Sin ella, imprimirá una página en blanco ya que la imagen no está cargada. =>$(popup).load(function(){ popup.focus(); popup.print(); });
La mejor manera de hacerlo sería enviar el contenido del div al servidor y abrir una nueva ventana donde el servidor podría poner esos contenidos en la nueva ventana.
Si esa no es una opción, puede intentar usar un lenguaje del lado del cliente como javascript para ocultar todo en la página excepto ese div y luego imprimir la página ...
fuente