Há tempos, em novembro de 2005, o AlistApart.com publicou um artigo sobre como eles publicaram um livro usando nada além de HTML e CSS. Veja: http://alistapart.com/article/boom
Aqui está um trecho desse artigo:
CSS2 tem uma noção de mídia paginada (pense em folhas de papel), em oposição a mídia contínua (pense em barras de rolagem). As folhas de estilo podem definir o tamanho das páginas e suas margens. Os modelos de página podem receber nomes e os elementos podem indicar em que página nomeada eles desejam imprimir. Além disso, os elementos no documento de origem podem forçar quebras de página. Aqui está um trecho da folha de estilos que usamos:
@page {
size: 7in 9.25in;
margin: 27mm 16mm 27mm 16mm;
}
Tendo uma editora sediada nos EUA, recebemos o tamanho da página em polegadas. Nós, europeus, continuamos com medições métricas. CSS aceita ambos.
Depois de configurar o tamanho e a margem da página, precisamos garantir que haja quebras de página nos lugares certos. O trecho a seguir mostra como as quebras de página são geradas após os capítulos e apêndices:
div.chapter, div.appendix {
page-break-after: always;
}
Além disso, usamos CSS2 para declarar páginas nomeadas:
div.titlepage {
page: blank;
}
Ou seja, a página de título deve ser impressa em páginas com o nome "em branco". O CSS2 descreveu o conceito de páginas nomeadas, mas seu valor só se torna aparente quando os cabeçalhos e rodapés estão disponíveis.
De qualquer forma…
Como você deseja imprimir A4, precisará de diferentes dimensões, é claro:
@page {
size: 21cm 29.7cm;
margin: 30mm 45mm 30mm 45mm;
/* change the margins as you want them to be. */
}
O artigo divide-se em coisas como definir quebras de página etc. para que você possa ler isso completamente.
No seu caso, o truque é criar o CSS impresso primeiro. A maioria dos navegadores modernos (> 2005) suporta zoom e já poderá exibir um site com base no CSS impresso.
Agora, você quer fazer com que a exibição na Web pareça um pouco diferente e adaptar todo o design para caber na maioria dos navegadores (incluindo os antigos, anteriores a 2005). Para isso, você precisará criar um arquivo CSS da Web ou substituir algumas partes do seu CSS impresso. Ao criar CSS para exibição na Web, lembre-se de que um navegador pode ter QUALQUER tamanho (pense: "móvel" até "TVs de tela grande"). Significado: para o CSS da web, é melhor definir a largura da página e a largura da imagem usando uma largura variável (%) para suportar o maior número possível de dispositivos de exibição e clientes de navegação na web.
EDIT (26-02-2015)
Hoje, deparei-me com outro artigo mais recente na SmashingMagazine, que também se dedica ao design para impressão em HTML e CSS ... apenas no caso de você poder usar outro tutorial.
EDIT (30-10-2018)
Foi trazido a minha atenção em que size
não é CSS3 válida, que é realmente correto - eu simplesmente repetiu o código citado no artigo, que (como observado) era bom CSS2 de idade (o que faz sentido quando você olha para o ano o artigo e esta resposta foi publicada pela primeira vez). De qualquer forma, aqui está o código CSS3 válido para sua conveniência de copiar e colar:
@media print {
body{
width: 21cm;
height: 29.7cm;
margin: 30mm 45mm 30mm 45mm;
/* change the margins as you want them to be. */
}
}
Caso você realmente precise de pixels ( você deve evitar o uso de pixels ), precisará escolher o DPI correto para impressão:
- 72 dpi (web) = 595 x 842 pixels
- 300 dpi (impressão) = 2480 x 3508 pixels
- 600 dpi (impressão de alta qualidade) = 4960 x 7016 pixels
No entanto, evitaria o aborrecimento e simplesmente usaria cm
(centímetros) ou mm
(milímetros) para dimensionar, pois isso evita falhas de renderização que podem surgir dependendo do cliente que você usa.