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:
CSS2 tiene una noción de medios paginados (piense hojas de papel), a diferencia de los medios continuos (piense en barras de desplazamiento). Las hojas de estilo pueden establecer el tamaño de las páginas y sus márgenes. Las plantillas de página pueden recibir nombres y los elementos pueden indicar en qué página con nombre desean imprimirse. Además, los elementos en el documento fuente pueden forzar saltos de página. Aquí hay un fragmento de la hoja de estilo que utilizamos:
@page {
size: 7in 9.25in;
margin: 27mm 16mm 27mm 16mm;
}
Al tener un editor con sede en EE. UU., Nos dieron el tamaño de página en pulgadas. Nosotros, siendo europeos, continuamos con mediciones métricas. CSS acepta ambos.
Después de configurar el tamaño y el margen de la página, necesitamos asegurarnos de que haya saltos de página en los lugares correctos. El siguiente extracto muestra cómo se generan los saltos de página después de capítulos y apéndices:
div.chapter, div.appendix {
page-break-after: always;
}
Además, utilizamos CSS2 para declarar páginas con nombre:
div.titlepage {
page: blank;
}
Es decir, la página de título debe imprimirse en páginas con el nombre "en blanco". CSS2 describió el concepto de páginas con nombre, pero su valor solo se hace evidente cuando los encabezados y pies de página están disponibles.
De todas formas…
Como desea imprimir A4, necesitará diferentes dimensiones, por supuesto:
@page {
size: 21cm 29.7cm;
margin: 30mm 45mm 30mm 45mm;
/* change the margins as you want them to be. */
}
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:
@media print {
body{
width: 21cm;
height: 29.7cm;
margin: 30mm 45mm 30mm 45mm;
/* change the margins as you want them to be. */
}
}
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:
- 72 ppp (web) = 595 X 842 píxeles
- 300 ppp (impresión) = 2480 X 3508 píxeles
- 600 ppp (impresión de alta calidad) = 4960 X 7016 píxeles
Sin embargo, evitaría la molestia y simplemente usaría cm
(centímetros) o mm
(milímetros) para dimensionar, ya que eso evita generar fallas que pueden surgir dependiendo del cliente que use.