рд╡рд┐рдиреНрдпрд╛рд╕:
рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо:
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)
рд╡рд░реНрдХрд░рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдкрд░ред(рдкреАрдбреАрдПрдл.рдЬреЗрдПрд╕:9177)
LoopbackPort.MessageHandler._onComObjOnMessage рдкрд░ (pdf.js:12833)
рд▓реВрдкрдмреИрдХрдкреЛрд░реНрдЯ рдкрд░ред(рдкреАрдбреАрдПрдл.рдЬреЗрдПрд╕:8681)
Array.forEach рдкрд░ ()
рдпрд╛рдиреА рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИ:
StyleElement = this.styleElement = document.createElement('style');
рд╕рдорд╕реНрдпрд╛ рдПрдХ рдбреЛрдо рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╣реИред рд╕рдорд╕реНрдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ PDF.js рдореЗрдВ рдПрдХ Node рдЙрджрд╛рд╣рд░рдг рд╣реИ , рдпрд╛ рд╕рдорд╕реНрдпрд╛рдПрдБ рдЧрд╣рд░реЗ рдореЗрдВ рдЫрд┐рдкреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдЗрд╕рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЕрдЧрд░ рдпрд╣рд╛рдВ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рдереЗред
(рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ) рдЕрдВрдХ #10039 рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ; рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, OffscreenCanvas
рд▓рд┐рдП рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рд░реА-рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдзрдиреНрдпрд╡рд╛рджред @Snuffleupagus рдореИрдВрдиреЗ рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрд╛, рдФрд░ рдЗрд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛; рд╕рдорд╕реНрдпрд╛рдПрдБ рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ рдХрд┐:
OffscreenCanvas
рдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЦреНрдп рдереНрд░реЗрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реЗрдм рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ);рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ 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__(...)ред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреЛрдИ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ"
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрдк рд╡реЗрдм-рд╡рд░реНрдХрд░ рдХреЗ рдЕрдВрджрд░ pdf.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ?
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ред
рд▓реЗрдХрд┐рди
getDocument
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордпред рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ