I’m working on setting up an automated lead generation system using n8n for my business. The workflow identifies new small businesses, evaluates their potential as leads, and then creates customized PDF proposals for each prospect.
I noticed there doesn’t seem to be a native n8n node that can create PDFs dynamically. As a workaround, I built a simple REST API that accepts template data and variables to generate the documents.
I’m wondering if there’s already a built-in way to handle PDF creation in n8n that I might have overlooked? Or are most people using similar custom solutions to work around this limitation? Would love to hear how others are tackling PDF generation in their n8n workflows.
Alice’s HTML/CSS to PDF approach with Puppeteer is solid, but I took a different route for the same problem. I integrated PDF-lib through an n8n Function node - gives you way more control over PDF structure without hitting external APIs. You can work with existing PDF templates, drop in dynamic text and images, even merge multiple docs. It’s got a steeper learning curve than REST APIs, but everything stays in your n8n instance and cuts down dependencies. For lead gen workflows like yours, this has been great - I keep consistent branding across all proposals while customizing content based on prospect data.
hey! i found a puppeteer node in n8n for making PDFs from HTML/CSS. it’s a lil more setup than an API, but it consolidates everything in one workflow. I’ve used it for invoices & it works really well!
Your REST API workaround is super common in the n8n community. I’ve run a similar setup for eight months and it’s way more reliable than in-workflow solutions. You get complete control over PDF libraries and templates without hitting n8n’s memory limits or timeout issues during complex document processing. Pro tip I learned the hard way: add proper error handling for malformed template data. Saved me tons of debugging when prospect data comes in weird formats. Also throw in simple caching if you’re generating similar proposals repeatedly. Yeah, maintaining a separate service adds overhead, but the stability and customization options make it worth it.