I've added a PDF generation feature to the blog that allows readers to download any post as a formatted PDF document. The system uses AWS Lambda with a Python function that converts markdown content to PDF using the ReportLab library. When someone clicks the Download PDF button on a post, their browser sends the post content to an API Gateway endpoint, which triggers the Lambda function to generate and return a properly formatted PDF file. I chose this serverless approach because it keeps costs minimal (typically under $0.02 per month for a personal blog) while providing real-time generation without pre-building PDFs for every post during the blog build process.

The implementation took some iteration to get right. I initially tried using WeasyPrint for PDF generation, but quickly discovered it requires system libraries that aren't available in the Lambda environment, so I switched to ReportLab which is pure Python. The design of the button also evolved through user feedback — starting with a prominent button with an emoji icon, then refining it down to a subtle text link Download PDF that appears inline with the post date, using a minimalist gray color that turns blue on hover. I also had to work through some technical challenges with CORS configuration and binary media type handling in API Gateway to ensure the PDFs download correctly as binary files rather than corrupted base64 text. The end result is a system that generates 2-10 KB PDFs in about 200-500 milliseconds, with proper formatting for headers, lists, code blocks, and other markdown elements.