1. Put this in the document (as well as a link to the jquery file).
<script type="text/javascript">
$(document).ready(function(){
setupLinks();
setupPrintPreview();
});
</script>
2. Put this in your external javascript:
function setupLinks(){
$('a.print-window').click(function(){
var w = window.open(this.href, 'printwindow', 'width=600,
height=400,scrollbars=yes,resizable=yes');
w.focus();
return false;
});
}
3. And this
function setupPrintPreview(){
if (window.name == 'printwindow') {
// all the settings below would need to be edited
$('.portletBody *').css({
color: '#000'
});
$('.bookList').show();
$('.collapse').show();
$('.expand').hide();
$('.noPrint').hide();
$('.portletBody').css({
padding: '1em',
fontSize: '.85em'
});
// provide a print link
$("h3").append('a link with an
'javascript:window.print()' href value);
}
}
In (1) we are calling a function (2) that bind the onclick event to any link with a class of ‘print-window’ – opening the current document in a named window. In (3) – if a window matches the given name, then massage the elements for the print medium, hide elements that were classed as ‘noPrint’ (formish things, whatever), and add a link with an ‘javascript:window.print()’ href value to the DOM.
The end. Lots of room for improvement, of course – the massaging would be done best by swapping the stylesheets, for example.
Posted by gonzalosilverio 
Posted by gonzalosilverio