I've been pretty happy with the webkit-based wkhtmltopdf. It does require an X11 server, but that doesn't mean you need a real display; I use Debian's xvfb-run wrapper to automatically run it inside xvfb. You can also build wkhtmltopdf against a custom-patched version of QT, which adds a bunch of features, including a fully X11-free workflow. There are some issues in areas like page breaks (which can be somewhat controlled with CSS), but overall it's decent. I use it to generate PDF invoices for a Ruby on Rails based webstore.