¿Es posible hacer que una página HTML se comporte, por ejemplo, como una página de tamaño A4 en MS Word?
Esencialmente, quiero poder mostrar la página HTML en el navegador y delinear el contenido en las dimensiones de una página de tamaño A4.
En aras de la simplicidad, supongo que la página HTML solo contendrá texto (sin imágenes, etc.) y no habrá <br>
etiquetas, por ejemplo.
Además, cuando se imprime la página HTML, saldría como páginas de papel de tamaño A4.
Respuestas:
Hace años, en noviembre de 2005, AlistApart.com publicó un artículo sobre cómo publicaron un libro utilizando nada más que HTML y CSS. Ver: http://alistapart.com/article/boom
Aquí hay un extracto de ese artículo:
De todas formas…
Como desea imprimir A4, necesitará diferentes dimensiones, por supuesto:
El artículo se sumerge en cosas como establecer saltos de página, etc., por lo que es posible que desee leerlo por completo.
En su caso, el truco es crear primero el CSS de impresión. La mayoría de los navegadores modernos (> 2005) admiten el zoom y ya podrán mostrar un sitio web basado en la impresión CSS.
Ahora, querrá hacer que la pantalla web se vea un poco diferente y adaptar todo el diseño para que se ajuste también a la mayoría de los navegadores (incluidos los antiguos, anteriores a 2005). Para eso, tendrá que crear un archivo CSS web o anular algunas partes de su CSS de impresión. Al crear CSS para visualización web, recuerde que un navegador puede tener CUALQUIER tamaño (piense: "móvil" hasta "televisores de pantalla grande"). Significado: para el CSS web, el ancho de página y el ancho de imagen se configuran mejor utilizando un ancho variable (%) para admitir tantos dispositivos de visualización y clientes de navegación web como sea posible.
EDITAR (26-02-2015)
Hoy, me topé con otro artículo más reciente en SmashingMagazine que también se sumerge en el diseño para imprimir con HTML y CSS ... en caso de que pueda usar otro tutorial más.
EDITAR (30-10-2018)
Me ha llamado la atención que
size
CSS3 no es válido, lo cual es correcto, simplemente repetí el código citado en el artículo que (como se señaló) era un buen CSS2 antiguo (lo cual tiene sentido cuando se mira el año en que el artículo y esta respuesta se publicó por primera vez). De todos modos, aquí está el código CSS3 válido para su conveniencia de copiar y pegar:En caso de que piense que realmente necesita píxeles (en realidad debería evitar usar píxeles ), deberá asegurarse de elegir el DPI correcto para imprimir:
Sin embargo, evitaría la molestia y simplemente usaría
cm
(centímetros) omm
(milímetros) para dimensionar, ya que eso evita generar fallas que pueden surgir dependiendo del cliente que use.fuente
cm
et al. Le aconsejo que lea los artículos vinculados y / o al menos mi respuesta. Al hacerlo, notará rápidamente que su pregunta en realidad no tiene sentido. Además, es posible que desee publicar su pregunta como una nueva pregunta si las cosas aún no están claras. Este es un sitio de preguntas y respuestas, no un foro. \ o /Sería bastante fácil forzar al navegador web a mostrar la página con las mismas dimensiones de píxeles que A4. Sin embargo, puede haber algunas peculiaridades cuando se representan las cosas.
Suponiendo que sus monitores muestren 72 ppp, puede agregar algo como esto:
fuente
body { height:297mm; width:210mm; margin-left:auto; margin-right:auto; }
Tamaño A4 es 210x297 mm
Por lo tanto, puede configurar la página HTML para que se ajuste a esos tamaños con CSS:
fuente
Cree una sección con cada página y use el siguiente código para ajustar los márgenes, la altura y el ancho.
Si está imprimiendo en tamaño A4.
Entonces usuario
luego crea un div con todo tu contenido.
o
fuente
@page Section1
trabajar con Chrome 41.0.2272.77. ¿Estás realmente seguro de que tu respuesta funciona? Intente, por ejemplo, visitardata:text/html,<style>@page x{size:100pt 200pt}</style><div style="page:x">x</div>
y abrir una vista previa de impresión. No veo diferencia entre eso ydata:text/html,x
. Cuando lo reemplazo@page x
con@page
, entonces funciona, pero ese no es un selector de página específica.He usado HTML para generar informes que se imprimen correctamente en tamaños reales en papel real.
Si usa cuidadosamente mm como sus unidades en el archivo CSS, debería estar bien, al menos para páginas individuales. Sin embargo, las personas pueden fastidiarlo cambiando el zoom de impresión en su navegador.
Parece que recuerdo que todo lo que estaba haciendo era una sola página, así que no tuve que preocuparme por la paginación, eso podría ser mucho más difícil.
fuente
Vi esta solución después de buscar en google, buscar "Plantilla de página CSS A4" (codepen.io). Muestra un área de tamaño A4 (A3, A5, también vertical) en el navegador, usando la etiqueta <page>. Dentro de esta etiqueta se muestra el contenido, pero la posición absoluta sigue siendo con respecto al área del navegador.
Esto funciona para mí sin que se incluya ninguna otra biblioteca css / js. Funciona para los navegadores actuales (IE, FF, Chrome).
fuente
box-shadow: none;
y no 0En tu normalidad
style.css
:En su
print.css
:fuente
PPI y DPI no hacen absolutamente ninguna diferencia en cómo un documento se imprimirá desde un navegador. la impresora no toma información sobre el paso del punto de la pantalla o el DPI de las imágenes, etc. el procesador de impresión del navegador aumentaría el DPI de las imágenes de algo bastante bajo como 72 ppp a cualquier DPI que sea el resto del documento. digamos que la imagen se muestra como media página de ancho, luego tiene aproximadamente 4 "de ancho físicamente. El ancho de píxel de la imagen sería de aproximadamente 300 píxeles para mostrarse correctamente en el navegador. Para cuando se imprima a 300 DPI nominales, el procesador ha agregado píxeles y la imagen crecerá a alrededor de 1200 px, que a 300 DPI es de 4 ".
cuando se trata de elementos basados en vectores o no basados en píxeles, como el texto, la impresora elige su propio DPI del controlador que no se relaciona con el paso de punto de la pantalla o el ancho del navegador, etc. si el navegador tiene una anchura de 3000 px, el procesador de impresión ajustará el texto según corresponda.
He aquí lo que dificulta la creación de pantallas de impresión: cada navegador e impresora interpretará los tamaños de texto (pt, em, px) y el espaciado a su manera. dependiendo de qué impresora, navegador y tal vez incluso el sistema operativo que utilice, obtendrá una cantidad diferente de líneas y caracteres por página. así que incluso si prueba en su computadora usando su navegador e impresora y descubre que puede mostrar el texto en un cuadro a 640x900px y es perfecto para imprimir, el próximo tipo que intente imprimir posiblemente lo imprimirá de manera diferente. realmente no hay forma de obligar a cada impresora y navegador a que sean idénticos cada vez.
olvide los píxeles y, además, olvide los DPI, lo único para lo que podría usar píxeles es establecer un ancho de tabla que simule el ancho de un área imprimible en su impresora. en ese caso encontré que 640px de ancho está cerca.
fuente
Buscando un problema similar, encontré esto: http://www.indigorose.com/forums/archive/index.php/t-13334.html
A4 es un formato de documento, como una imagen de pantalla que dependerá de la resolución de la imagen, por ejemplo, un documento A4 redimensionado a:
fuente
Sé que este tema es bastante antiguo, pero quiero compartir mi experiencia sobre ese tema. En realidad, estaba buscando un módulo que me pueda ayudar con mis informes diarios. Estoy escribiendo algunas documentaciones y algunos informes en HTML + CSS (en lugar de Word, Latex, OO, ...). El objetivo sería imprimirlos en papel A4 para compartirlos con amigos, ... En lugar de buscar, decidí tener una pequeña sesión de codificación divertida para implementar una biblioteca simple que pueda manejar "páginas", número de página, resumen, encabezado , pie de página, .... Finalmente, lo hice en ~~ 2h y sé que esa no es la mejor herramienta, pero casi está bien para mi propósito. Puedes echar un vistazo a este proyecto en mi repositorio y no dudes en compartir tus ideas. Tal vez no sea lo que está buscando al 100%, pero creo que este módulo puede ayudarlo.
Básicamente creo una página de cuerpo "ancho: 200 mm;" y contenedor de altura: 290 mm (más pequeño que A4). Luego usé page-break-after: siempre; para que la opción "imprimir" del navegador sepa cuándo dividir las páginas.
repo: https://github.com/kursion/jsprint
fuente
Técnicamente, podría hacerlo, pero tomaría mucho trabajo lograr que todos los navegadores impriman la página exactamente como se muestra en la pantalla. Además, la mayoría de los navegadores fuerzan la URL, la fecha de impresión y la numeración de páginas en la impresión, lo que no siempre se desea. Esto no puede ser alterado o deshabilitado.
En cambio, recomendaría crear un PDF basado en el contenido de la pantalla y servir el PDF para descargar y / o imprimir. Aunque la mayoría de las bibliotecas de PDF disponibles son de pago, hay algunas alternativas gratuitas disponibles para crear archivos PDF básicos.
fuente
Utilicé 680px en informes comerciales para imprimir en páginas A4 desde 1998. El 700px no podía ajustarse correctamente dependiendo del tamaño de los márgenes. Los navegadores modernos pueden reducir la página para que quepa en la impresora, pero si usa 680 píxeles, imprimirá correctamente en casi cualquier navegador.
Eso es HTML para usted Ejecute el fragmento de código y vea el resultado:
JSFiddle:
https://jsfiddle.net/ajofmm7r/
fuente
Muchas formas de hacer:
fuente
Es completamente posible configurar su diseño para asumir las proporciones de una página a4. Solo tendría que establecer el ancho y la altura en consecuencia (posiblemente verifique con
window.innerHeight
ywindow.innerWidth
aunque no estoy seguro de si eso es confiable).La parte difícil es imprimir A4. Javascript, por ejemplo, solo admite la impresión de páginas rudimentariamente con el
window.print
método. Como @Prutswonder sugirió, crear un PDF desde la página web probablemente sea la forma más sofisticada de hacerlo (aparte de proporcionar documentación PDF en primer lugar). Sin embargo, esto no es tan trivial como uno podría pensar. Aquí hay un enlace que tiene una descripción de una clase Java de código abierto para crear archivos PDF desde HTML: http://www.javaworld.com/javaworld/jw-04-2006/jw-0410-html.html .Obviamente, una vez que haya creado un PDF con impresión de proporciones A4, dará como resultado una impresión A4 limpia de su página. Si vale la pena la inversión de tiempo es otra cuestión.
fuente