There is a possibility to define separate CSS styles for media type print.
Here[
^]'s a little article. You should find plenty like this if you Googled.
But my personal experience is, most web browsers ignore properties like background color when they print a page. The truth is, 'ability to view web pages' being the prime objective of web browsers, most of them are not programmed smart enough to print everything they render.
A smart thing to do would be to design a separate printer friendly style. Where there are no floating bodies or no backgrounds, and minimal amount of colors used for texts (you need to use colors for images though), and the only the content of the page is displayed.