I have found Jasper Reports to be a great tool for allowing printing from Java-based applications. I am using the iReports tool to create the reports in a GUI mode much like Crystal Reports. Then, with a few lines of Java, I can display the report to view the report and allow him to print.
Right now, I am trying to figure out how to display totals on the page. I found this nice article explaining the basics:
Open Source Reporting with JasperReports and iReports (Totals on Page 3)