【前端开发】批量生成HTML邮件模板

批量生成HTML邮件模板

代码(Javascript)

const puppeteer = require('puppeteer');
const fs = require('fs');

async function saveHTMLasImage(html, filePath) {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.setContent(html);
  await page.waitForTimeout(20000); // 等待页面加载完成

  const screenshotOptions = {
    type: 'png',
    fullPage: true,
    omitBackground: true
  };
  
  const imageBuffer = await page.screenshot(screenshotOptions);
  fs.writeFileSync(filePath, imageBuffer);

  await browser.close();
}

// groupJsonAll.txt是需要遍历填充在html模板上的数据
fs.readFile('groupJsonAll.txt', 'utf8', (err, data) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(JSON.parse(data).length)
  analysisData(JSON.parse(data))
});

// 立即执行的异步函数表达式
async function analysisData(data) {
  const MAX_CONCURRENT_TASKS = 10; // 最大并发任务数
  const tasks = [];
  let index = 0;

  while (index < data.length) {
    const slice = data.slice(index, index + MAX_CONCURRENT_TASKS); // 切片取出最大并发任务数的数据项
    const promises = slice.map(async (item, i) => {
        let html = 
        `html文案`
        const filePath = `./img4/${group_id}.png`;
        // 保存图片
        await saveHTMLasImage(html, filePath);

    });

    const completedPromise = Promise.race(promises); // 等待最快完成的任务
    tasks.push(completedPromise);

    await Promise.all(tasks); // 等待所有任务完成

    index += MAX_CONCURRENT_TASKS; // 更新索引
  }
}

同时,贴上咱的个人博客,欢迎各位来访~
青枫阁

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值