Also there's gnujpdf (formerly retepPDF) on sourceforge.net. It mimics the
Java printing subsystem. It does OK for lightweight printing requirements, though intense graphics may be beyond it.
BTW There's a pitfall in printing PDF's. If you don't set the Content-length header to the size of the generated PDF, some versions of Netscape won't be able to display it properly.
Unfortunately, since the size of a PDF isn't easy to determine in advance, this has forced me to write the PDF to a temporary file just to get its length, output the HTTP headers, then spool out the temp file to the HTTP output stream.