Credo che tutto quello che chiedi si faccia semplicemente con l'uso appropriato dei CSS.
In particolare puoi definire CSS diversi per la presentazione a video (media="screen") e per la stampa (media="print").
L'unico problema e` che il supporto corretto all'attributo media (del tag link) non c'e` per tutti i browser piu` diffusi.
Pero` non puoi fidarti che i tuoi utenti abbiano una pagina A4 (salvo che sei in una intranet): esistono altri formati di stampa, tipo l'americano letter, l'A3, ecc. E non puoi sapere se l'utente stampa in orizzontale o in verticale.
Per una cosa sicura, sarebbe il caso di allegare un formato diverso dall'HTML (ad esempio il PDF), che venga usato solo per la stampa.
Se una soluzione con i CSS ti puo` andare bene, ti sposto nel forum su XHTML.