Using Cascading Style Sheets (CSS) for Printing
The first task is to make sure that your HTML works well with CSS to begin with. All of the content should be wrapped in a DIV. The blocks themselves need to be wrapped in DIVs as well, i.e. the header, footer, main content area, etc.
Tables should only be used for tabular data display. Use unique classes or IDs for each divs you use. Put your sub-components in divs, such as the navigation for the header, the login area, etc. You can get the media types and their descriptions from the W3C spec.