Generating PDFs is one of those things that can be a pain in the arse to build, but is quite a common requirement of web applications. ... There are many ways to generate PDFs dynamically, from using some king of object builder, to using XML and an XSLT template. But by far the easiest is using plain old HTML, CSS and PhantomJS. In today’s tutorial I’m going to walk you through how I generate PDFs in web applications.

http://culttt.com/2015/10/26/generating-pdfs-from-html-and-phantomjs/