It is tedious to code the layout and design of the
PDF using code libraries such as FPDF, Prawn etc.
I recently used Prince[1] to generate a PDF version of a web-based book. The PDF needed to be suitable for professional printing (crop marks, bleed, trim, etc.). Prince was the only solution I could find that came even close to being adequate for the job, and it exceeded my expectations. Creating the HTML for Prince wasn't tedious at all. It was almost a pleasure because Prince includes better support for print-related CSS3 properties than any rendering engine I've encountered. There's a web-based service named DocRaptor[2] that is powered by Prince.
You can try using FlyingSaucer (https://code.google.com/p/flying-saucer/) It takes in HTML and gives PDF. It also supports print related CSS3 properties and its open source. May be it cannot compete with Prince, but it is a good open source alternative
I havent tried charts with princexml, but flying-saucer has capability to do custom rendering. So if you want, you can use a service to get image of your chart and then render that in the pdf as image.
[1] http://www.princexml.com/
[2] http://docraptor.com/