配置:
重现问题的步骤:
function onmessage () {
const pdfDocument = await pdfjs.getDocument('/some-hard-coded.pdf')
const page = await pdfDocument.getPage(1)
const viewport = pdfPage.getViewport(1)
const width = 250
const height = viewport.height * (width / viewport.width)
const canvas = new OffscreenCanvas(width, height)
const canvasContext = canvas.getContext('2d', { alpha: false })
return page.render({ canvasContext, viewport })
})
w = new Worker('sample-pdf.js');
调用它什么是预期行为? (添加截图)
PDF 将呈现为OffscreenCanvas
什么地方出了错? (添加截图)
参考错误:文档未定义
在 GenericFontLoader.insertRule (pdf.js:10154)
在 GenericFontLoader.bind (pdf.js:10205)
在 WorkerTransport。(pdf.js:9177)
在 LoopbackPort.MessageHandler._onComObjOnMessage (pdf.js:12833)
在环回端口。(pdf.js:8681)
在 Array.forEach ()
即这是失败的:
styleElement = this.styleElement = document.createElement('style');
问题是没有 DOM。 问题可能是文档之一,因为PDF.js 有一个 Node 示例,或者可能存在潜伏在深处的问题。 无论如何,我想报告它,以防这里有一些明显的指导方针。
看起来(基本上)像问题 #10039 的副本; 最有可能的情况是,需要进行大量的重构才能让OffscreenCanvas
能够开箱即用。
谢谢。 @Snuffleupagus我看到了这个问题,应该把它链接起来; 在以下意义上,问题并不相同:
OffscreenCanvas
可以在主线程中使用(即它的使用不限于web worker);换句话说, OffscreenCanvas
支持是另一个问题,它恰好可以替代CanvasElement
,但仅此一项可能不足以解决此问题。
查看https://github.com/mozilla/pdf.js/blob/master/examples/node/pdf2png/pdf2png.js (节点示例),看起来您可能需要制作一个canvasFactory
, 也。 如果你这样做会发生什么?
您如何在网络工作者中使用 pdf.js?
我是通过这个导入的。
// Worker.ts
import { pdfjs } from "react-pdf";
pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;
pdfjs.getDocument(...) => errors
但是当使用getDocument
。 它返回一个错误
未捕获(承诺)错误:设置假工人失败:“__webpack_require__(...).ensure is not a function”
最有用的评论
您如何在网络工作者中使用 pdf.js?
我是通过这个导入的。
但是当使用
getDocument
。 它返回一个错误