A lot of problems with printing you can solve with respect of media
attribute of the stylesheet definition. You can declare
<link rel="stylesheet" type="text/css" media="screen" href="..." />
to include some css for screen only, use media="all"
to define some information be displayed on both screen and printer or make a html elements be displayed only during printing. With jQuery UI for example you can find a good idea to print only a selected tab (or accordion). You can find useful not print some hidden divs like div.loadingui
. So you can make a CSS like
<style type="text/css" media="screen">
#printableButNotVisible { display:none }
</style>
<style type="text/css" media="print">
#accordion h3, #vcol, div.loadingui, div.ui-tabs-hide,
ul.ui-tabs-nav li, td.HeaderRight { display:none }
#printableButNotVisible { display:block }
</style>
It's only an example, but I hope to explain the main idea. Moreover you can dynamically create a css and insert or switch in your html document (see http://docs.jquery.com/Tutorials:5_Quick_jQuery_Tips#Switch_A_Stylesheet).
It can be a good idea to remove menus from the page during printing, but I can gives you no example, because I don't know what kind of menus you use.
If somebody knows a good CSS for print media for jQuery UI and for jqGrid it would be very interesting for me too.