Recently, we had the opportunity to do some clean up work on a legacy web app. At the top of our list was to refactor PDF report rendering to the browser. The typical application use case was as follows: User enters data. User submits data. User requests PDF report. Application queues report. Application processes report. Application stores the [...]