我正在使用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
与抛出错误一起使用。:(
我会很感激任何帮助。