If you're considering PuppeteerSharp for PDF generation, here's the version of the story that doesn't show up in the "getting started" docs.
I didn't realize how much time I spent on cleanups until regex let me stop.