web_ppt / backend /src /services /screenshotService.js
CatPtain's picture
Upload screenshotService.js
8e2959f verified
raw
history blame
1.26 kB
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();