使用nodejs将markdown文件转为pdf(保留图片,亲测有效)

安装依赖:

npm install markdown-it puppeteer

完整代码:

const fs = require("fs");
const md = require("markdown-it")();
const puppeteer = require("puppeteer");

export const mergeMdToPdf = (inputFiles: Array<any>, outputFile) => {
  const tempFile = outputFile.replaceAll(".pdf", ".html"); // 临时文件名
  // 生成临时 HTML 文件
  let htmlContent = "";
  for (let i = 0; i < inputFiles.length; i++) {
    const content = fs.readFileSync(inputFiles[i]);
    htmlContent += content.toString();
  }
  let htmlResult = md.render(htmlContent);
  htmlResult = htmlResult.replaceAll("%5C", "/").replaceAll('<img src="', '<img src="file:/');
  fs.writeFileSync(tempFile, htmlResult);
  // 将 HTML 文件转换为 PDF 文件
  (async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    //读取html文件,使用file协议,否则无法读取图片
    await page.goto(`file://${tempFile}`, { waitUntil: "networkidle0" });
    const pdfBuffer = await page.pdf(); // 将页面转换为PDF
    fs.writeFileSync(outputFile, pdfBuffer); // 将PDF内容写入文件
    await browser.close();
    //删除临时文件
    fs.unlink(tempFile, (err) => {
      if (err) {
        console.error(err);
        return;
      }
      console.log("Temp file removed");
    });
  })();
};
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值