Tempo fa, nel novembre 2005, AlistApart.com ha pubblicato un articolo su come hanno pubblicato un libro utilizzando nient'altro che HTML e CSS. Vedere: http://alistapart.com/article/boom
Ecco un estratto di quell'articolo:
CSS2 ha una nozione di supporti paginati (pensa ai fogli di carta), al contrario dei supporti continui (pensa alle barre di scorrimento). I fogli di stile possono impostare le dimensioni delle pagine e i loro margini. Ai modelli di pagina possono essere dati nomi ed elementi possono indicare su quale pagina nominata vogliono essere stampati. Inoltre, gli elementi nel documento di origine possono forzare le interruzioni di pagina. Ecco un frammento del foglio di stile che abbiamo usato:
@page {
size: 7in 9.25in;
margin: 27mm 16mm 27mm 16mm;
}
Avendo un editore con sede negli Stati Uniti, ci hanno dato le dimensioni della pagina in pollici. Noi, europei, abbiamo continuato con le misurazioni metriche. CSS accetta entrambi.
Dopo aver impostato le dimensioni e il margine della pagina, dovevamo assicurarci che ci siano interruzioni di pagina nei punti giusti. Il seguente estratto mostra come vengono generate le interruzioni di pagina dopo i capitoli e le appendici:
div.chapter, div.appendix {
page-break-after: always;
}
Inoltre, abbiamo usato CSS2 per dichiarare pagine con nome:
div.titlepage {
page: blank;
}
Cioè, il frontespizio deve essere stampato su pagine con il nome "vuoto". CSS2 ha descritto il concetto di pagine con nome, ma il loro valore diventa evidente solo quando sono disponibili intestazioni e piè di pagina.
Comunque…
Poiché vuoi stampare A4, avrai ovviamente bisogno di diverse dimensioni:
@page {
size: 21cm 29.7cm;
margin: 30mm 45mm 30mm 45mm;
/* change the margins as you want them to be. */
}
L'articolo approfondisce cose come l'impostazione di interruzioni di pagina, ecc., Quindi potresti volerlo leggere completamente.
Nel tuo caso, il trucco è creare prima il CSS di stampa. I browser più moderni (> 2005) supportano lo zoom e saranno già in grado di visualizzare un sito Web basato sul CSS di stampa.
Ora, vorrai rendere il display Web un po 'diverso e adattare l'intero design per adattarlo anche alla maggior parte dei browser (compresi quelli precedenti, precedenti al 2005). Per questo, dovrai creare un file CSS web o sovrascrivere alcune parti del tuo CSS di stampa. Quando crei CSS per la visualizzazione Web, ricorda che un browser può avere QUALSIASI dimensione (pensa: "mobile" fino a "TV a grande schermo"). Significato: per il web CSS la tua larghezza di pagina e larghezza di immagine è impostata al meglio usando una larghezza variabile (%) per supportare il maggior numero possibile di dispositivi di visualizzazione e client di navigazione web.
EDIT (26-02-2015)
Oggi mi è capitato di imbattermi in un altro articolo più recente su SmashingMagazine che si dedica anche alla progettazione per la stampa con HTML e CSS ... nel caso in cui tu potessi usare ancora un altro tutorial.
EDIT (30-10-2018)
È stato portato alla mia attenzione in quanto size
CSS3 non è valido, il che è effettivamente corretto - ho semplicemente ripetuto il codice citato nell'articolo che (come notato) era un buon vecchio CSS2 (che ha senso quando guardi l'anno in cui l'articolo e questa risposta è stata pubblicata per la prima volta). Ad ogni modo, ecco il codice CSS3 valido per la tua comodità di copia e incolla:
@media print {
body{
width: 21cm;
height: 29.7cm;
margin: 30mm 45mm 30mm 45mm;
/* change the margins as you want them to be. */
}
}
Nel caso in cui pensi di aver davvero bisogno di pixel ( dovresti effettivamente evitare di utilizzare i pixel ), dovrai occuparti della scelta del DPI corretto per la stampa:
- 72 dpi (web) = 595 X 842 pixel
- 300 dpi (stampa) = 2480 X 3508 pixel
- 600 dpi (stampa di alta qualità) = 4960 X 7016 pixel
Tuttavia, eviterei la seccatura e utilizzerei semplicemente cm
(centimetri) o mm
(millimetri) per il dimensionamento in quanto ciò evita il rendering di anomalie che possono sorgere a seconda del client che si utilizza.