Я использую 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);
});
});
});
});
Работает нормально. Но во время процесса генерации он блокирует основной поток, что вызывает некоторые проблемы с пользовательским интерфейсом.
Итак, я хочу переместить все логи c в веб-рабочий для освобождения основного потока.
Но при работе в веб-работнике возникает ошибка:
pdf. js: 11210 Uncaught (в обещании) Ошибка: сбой при настройке поддельного работника: " webpack_require (...). Убедитесь, что это не функция ".
Вызывается из этой функции setupFakeWorkerGlobal
Я думаю, что он не может загрузить workerSrc
, поэтому он должен использовать fake worker
с ошибкой броска. : (
Буду признателен за любую помощь.