import puppeteer from 'puppeteer'; class ScreenshotService { async generateScreenshot(htmlContent, options = {}) { const browser = await puppeteer.launch({ headless: true, args: [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', '--disable-accelerated-2d-canvas', '--no-first-run', '--no-zygote', '--single-process', // <- this one doesn't work in Windows '--disable-gpu' ] }); try { const page = await browser.newPage(); // 设置页面视窗大小,匹配PPT的4:3比例 await page.setViewport({ width: 1000, height: 750, deviceScaleFactor: 2 // 高分辨率 }); // 设置HTML内容 await page.setContent(htmlContent, { waitUntil: 'networkidle0' }); // 等待页面完全加载 await page.waitForTimeout(1000); // 截图 const screenshot = await page.screenshot({ type: 'jpeg', quality: 85, fullPage: false }); return screenshot; } finally { await browser.close(); } } } export default new ScreenshotService();