2

我正在使用pdf.js从 pdf 文档生成图像。

这是我的代码

import { pdfjs } from "react-pdf";
pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`
// GENERATE IMAGES

const loadingTask = pdfjs.getDocument(dataUrl);
const pdf = await loadingTask.promise;
const promises = Array.from(new Array(pdf.numPages)).map((_, index) => {
  return new Promise((resolve, reject) => {
    var canvas = document.createElement("canvas");
    pdf.getPage(index + 1).then((page) => {
      var vp = page.getViewport({ scale: 1 });
      canvas.width = 595;
      canvas.height = 842;
      var scale = Math.min(canvas.width / vp.width, canvas.height / vp.height);
      const canvasContext = canvas.getContext("2d");
      if (!canvasContext) return reject("Can not get context");
      const renderedPage = page.render({
        canvasContext,
        viewport: page.getViewport({ scale }),
      });
      return renderedPage.promise.then(() => {
        const url = canvas.toDataURL("image/jpeg");
        resolve(url);
      });
    });
  });
});



它工作正常。但是在生成过程中,它阻塞了导致一些 UI 问题的主线程。

因此,我想将所有逻辑移至 Web Worker 以释放主线程。

但是在web worker中运行时,出现错误:

pdf.js:11210 Uncaught (in promise) 错误:设置假工人失败:“ webpack_require (...).ensure is not a function”。

它是从这个函数setupFakeWorkerGlobal抛出的

我的猜测是它无法加载workerSrc,所以它必须fake worker与抛出错误一起使用。:(

我会很感激任何帮助。

4

0 回答 0