...using [jsPDF](https://github.com/MrRio/jsPDF), with a static fallback document that is periodically replaced, as is currently the case. The code for this can be found in http://rawgit.com/MrRio/jsPDF/master/ (pick the "HTML Renderer" example from the dropdown list).