记录 pdf 转 图片 方法

171 阅读1分钟

项目里引用的是 pdfh5 的包 所以直接就用这个整

const pdfjs = require("pdfh5/js/pdf");
const pdfWorker = require("pdfh5/js/pdf.worker");
pdfjs.GlobalWorkerOptions.workerSrc = pdfWorker;


// pdf 转图片
export const pdfToImage = async (pdfUrl) => {
  try {
    let imageBaseUrlList = [];
    const pdfDoc = await pdfjs.getDocument(pdfUrl).promise;
    const totalPage = pdfDoc.numPages;
    for (let i = 1; i <= totalPage; i++) {
      const page = await pdfDoc.getPage(i);
      let scaledViewport = page.getViewport({ scale: 1.5 });
      let canvas = document.createElement("canvas");
      canvas.height = scaledViewport.height;
      canvas.width = scaledViewport.width;
      let context = canvas.getContext("2d");
      let renderContext = {
        canvasContext: context,
        viewport: scaledViewport,
      };
      await page.render(renderContext);
      const jpgBase64 = canvas.toDataURL("image/jpeg");
      imageBaseUrlList.push({ url: jpgBase64, t: i });
      canvas.remove();
      if (imageBaseUrlList.length === totalPage) {
        imageBaseUrlList.sort((a, b) => a.t - b.t);
        return imageBaseUrlList.map((item) => item.url);
      }
    }
  } catch (error) {
    return error;
  }
};