Generate some invoice and let the user print it; that would be the best solution; the user can just save this page to print later (or never — one of the goals of new developments in computer industry was paperless business, so why on Earth printing should be enforced).
The problem though is: many Web pages these days are overly complicated and not suitable for printing. Just recently the most popular solution was a link "printable version"; this approach is still used pretty often. I think this is ugly and nearly obsolete approach. It apparently creates many problems of support.
There is much more modern and elegant approach: using CSS
Media Types. The idea is to provide CSS style sheet which can define different styles for different media types, usually "@media print" and "@media screen". One can also have common styles for both screen and printed presentations, "@media screen, print". CSS can include special media rules using the syntax shown here:
http://www.w3schools.com/css/css_mediatypes.asp[
^].
This is the chapter of the Standard with detailed description:
http://www.w3.org/TR/CSS2/media.html[
^].
—SA