Nestjs Reportes Genera Pdfs Desde Node Full -mega- -
const pdf = await page.pdf( format: 'A4', printBackground: true, margin: top: '20mm', bottom: '20mm', left: '15mm', right: '15mm' , );
(covers 95% of real-world needs).
res.set( 'Content-Type': 'application/pdf', 'Content-Disposition': `attachment; filename=invoice-$data.invoiceNumber.pdf`, 'Content-Length': pdfBuffer.length, ); res.send(pdfBuffer); NestJs Reportes Genera PDFs desde Node Full -Mega-
<div class="total">Grand Total: $total</div> </body> </html>
A. Browser Pooling (avoid cold starts) import Browser from 'puppeteer'; export class BrowserPool private static instances: Browser[] = []; private static max = 5; const pdf = await page
return this.instances.pop()!;
res.setHeader('Content-Type', 'application/pdf'); res.setHeader('Content-Disposition', 'attachment; filename=large-report.pdf'); margin: top: '20mm'
(in main.ts or before use):
✅ Reuse browser instance across requests ✅ Stream large PDFs instead of buffering ✅ Set proper timeouts for slow renders ✅ Use Docker with pre-installed Chrome
// Option 1: Download as file @Post('invoice') async generateInvoice(@Body() data: any, @Res() res: Response) const pdfBuffer = await this.pdfService.generateReport('invoice', data);