Pdf.js: рд╡реЗрдмрдкреИрдХ рдирд┐рд░реНрджреЗрд╢ рдЕрднреА рднреА 'рдирдХрд▓реА рдХрд╛рд░реНрдпрдХрд░реНрддрд╛' рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рд╕рд┐рддре░ 2016  ┬╖  32рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mozilla/pdf.js

рд╡рд┐рдиреНрдпрд╛рд╕:

  • рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдЗрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: Chrome 52
  • рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЗрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: OS X Yosemite
  • PDF.js рд╕рдВрд╕реНрдХрд░рдг: 1.4.237
  • рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ: рдирд╣реАрдВ

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо:
рдореЗрд░рд╛ рдХреЛрдб рд╣реИ:

import pdflib from 'pdfjs-dist'
pdflib.PDFJS.workerSrc = './node_modules/pdfjs-dist/build/pdf.worker.entry.js'

рдЬреИрд╕рд╛ рдХрд┐ https://github.com/mozilla/pdf.js/wiki/Setup-pdf.js-in-a-website#with -webpack, рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ
рдлрд┐рд░ рднреА рдореБрдЭреЗ рдЕрдкрдиреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ Warning: Setting up fake worker.' , рдЬрдм рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреИрд╕реЗ рдирд┐рд░реНрджреЗрд╢ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗред

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрджреЗрд╢ рдкрд░ рд╢рдмреНрдж "PDFJS.workerSrc _shall_ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ" рдЧрд▓рдд рд╣реИ (рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдбрд┐рдВрдЧ) рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рд╣реИ, рдЬрдмрдХрд┐ "PDFJS.workerSrc_should_ рдФрд░ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ" рдХрд╛ рдЕрд░реНрде рд╣реИ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рднреА рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдкрде ( pdfjsLib.PDFJS.workerSrc = '../../build/webpack/pdf.worker.bundle.js'; ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ PDFJS рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдЧрд╛ред

рдореИрдВ рднреА рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдБ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЙрди рдореБрджреНрджреЛрдВ / рдкреАрдЖрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬ рдХреА рд╣реИ рдЬреЛ <1 рд╡рд░реНрд╖ рдкреБрд░рд╛рдиреЗ рд╣реИрдВ рдЬреИрд╕реЗ https://github.com/mozilla/pdf.js/pull/6595 рдЬреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдХреБрдЫ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЛрдбрд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╣ рдХреЛрдб рд▓рдЧрддрд╛ рд╣реИ рд░реЗрдкреЛ рдореЗрдВ рдЕрдм рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП workerSrc рд╕реЗрдЯрд┐рдВрдЧ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧ рджреЛрдиреЛрдВ рд╣реА рдореЗрд░реЗ рд▓рд┐рдП рдлрд░реНрдЬреА рд╡рд░реНрдХрд░ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВ ... рдирдХрд▓реА рд╡рд░реНрдХрд░ рдХреЛ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рд╡рд░реНрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд╣рд╛рдВ рдвреВрдВрдврдирд╛ рд╣реИ (рдЬреИрд╕реЗ 1.bundle.js рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╣реИ рдЬрдм bundle.js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ), рддреЛ рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ рдХрд┐ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЗрд╕ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ workerSrc рдХреЛ 1.bundle.js рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ PDFWorker ( pdflib.PDFJS.PDFWorker = require('worker!pdfjs-dist/build/pdf.worker.entry.js') ) рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрди рдХреЗ рд╡рд░реНрдХрд░-рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдпрд╛ рддреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреЛ рдЧрдпрд╛ рд╣реВрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдЕрдкрдиреЗ рд╡реЗрдмрдкреИрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред рд╡реЗрдмрдкреИрдХ рдХреЗ рдмрдВрдбрд▓рд┐рдВрдЧ рдпрд╛ рд▓реЛрдбрд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдирд┐рд░реНрдорд╛рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реНрд░реЛрдд рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП CopyWebpackPlugin рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

рдореЗрд░реЗ рджрд░реНрд╢рдХ рдореЗрдВ:

import pdfjsLib from 'pdfjs-dist';

if (process.env.NODE_ENV !== 'production') {
   //in dev, get it from the node_modules directory
   //NOTE: don't use the "entry" file -- the script will fail and the web worker will not be used
   pdfjsLib.PDFJS.workerSrc = `${process.env.APP_ROOT}/node_modules/pdfjs-dist/build/pdf.worker.js`;
} else {
   //in prod, get it from the build directory
   pdfjsLib.PDFJS.workerSrc = `${process.env.APP_ROOT}/build/pdf.worker.js`;
}

webpack.config.js :

const CopyWebpackPlugin = require('copy-webpack-plugin');

return {
   //... rest of config omitted
   plugins: [{
      new CopyWebpackPlugin([{
         from: 'node_modules/pdfjs-dist/build/pdf.worker.js',
         to: 'pdf.worker.js'
      }])
   }]
}

рд╕рднреА 32 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдлрд░реНрдЬреА рдХрд░реНрдордЪрд╛рд░реА рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рд╢реНрд░рдорд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд╣рд╛рдВ рдвреВрдВрдврдирд╛ рд╣реИ (рдЬреИрд╕реЗ 1.bundle.js рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╣реИ рдЬрдм рдмрдВрдбрд▓ редjs рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ), рддреЛ рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ рдХрд┐ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЗрд╕ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдмрдВрдбрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдореЗрдВ рдпрд╣ рдЧрд▓рдд рд╣реИ - рдпрд╣ рдкреГрд╖реНрда рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдкреНрд░рджрд░реНрд╢рди (рдЖрдХрд╛рд░ рдФрд░ рдЖрдХрд╛рд░) рд╕реЗ рд╣реИред рд╕рдВрдкреВрд░реНрдг pdf.worker.js рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрд▓рдЧ рдмрдВрдбрд▓ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рднреА рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (pdfjsLib.PDFJS.workerSrc = '..////build/webpack/pdf.worker.bundle .js';) рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред PDFJS рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдЧрд╛ (рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ)ред

pdf.worker.bundle.js рдлрд╝рд╛рдЗрд▓ рдЖрдк рдПрдХ рдмрдВрдбрд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ pdf.worker.js рдореЙрдбреНрдпреВрд▓ (pdfjs-dist рд╕реЗ рдЖрдпрд╛рддрд┐рдд) рд╢рд╛рдорд┐рд▓ рд╣реИ

рдореБрджреНрджреЗ рдХрд╛ рд╡рд░реНрдгрди рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдмрдВрдбрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдореЗрдВ рдпрд╣ рдЧрд▓рдд рд╣реИ - рдпрд╣ рдкреГрд╖реНрда рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдкреНрд░рджрд░реНрд╢рди (рдЖрдХрд╛рд░ рдФрд░ рдЖрдХрд╛рд░) рд╕реЗ рд╣реИред рд╕рдВрдкреВрд░реНрдг pdf.worker.js рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрд▓рдЧ рдмрдВрдбрд▓ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред

рдмрдВрдбрд▓ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХреА рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ 1.bundle.js рд░реВрдк рдореЗрдВ рдмрдВрдбрд▓ рдХреА рдЧрдИ рд╣реИред PDF рд▓реЛрдб рдХрд░рдиреЗ рдкрд░, 1.bundle.js рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдореЗрд░реЗ <head> рдЯреИрдЧ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрджрд┐ рдпрд╣ PDFJS рдпрд╛ рд╡реЗрдмрдкреИрдХ рд╕реЗ рд╣реИ рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ)ред

pdf.worker.bundle.js рдлрд╝рд╛рдЗрд▓ рдЖрдк рдПрдХ рдмрдВрдбрд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ pdf.worker.js рдореЙрдбреНрдпреВрд▓ (pdfjs-dist рд╕реЗ рдЖрдпрд╛рддрд┐рдд) рд╢рд╛рдорд┐рд▓ рд╣реИ

рдХреНрдпрд╛ рдПрдХ рдРрд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ node_modules рд╕реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХреА рдореЗрдВ рдкрд╣рд▓реЗ, рдФрд░ рдпрдХреАрдирди рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ? рд╡рд┐рдХреА рдЕрдиреБрднрд╛рдЧ рд╕реЗ: "рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдмрдВрдбрд▓ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛: рдлрд╝рд╛рдЗрд▓ рд▓реЗ рд▓реЛ" ред/node_modules/pdfjs-dist/build/pdf.worker.entry.js "

@yurydelendik # 6595 рдореЗрдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рдСрдЯреЛ-рдбрд┐рдЯреЗрдХреНрд╢рди / рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ

рдореБрджреНрджреЗ рдХрд╛ рд╡рд░реНрдгрди рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдпрд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдПрдХ ~ 50 рд▓рд╛рдЗрди рд╕рд╛рд░рд╛рдВрд╢ рд╣реИ: http://pastebin.com/raw/PHs6bfbyред file рддрд░реНрдХ рд╡рд╕реНрддреБрддрдГ <input type='file' /> рддрддреНрд╡ рдХреА рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИред

@yurydelendik # 6595 рдореЗрдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рдСрдЯреЛ-рдбрд┐рдЯреЗрдХреНрд╢рди / рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ

рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдВрдбрд▓рд░реНрд╕ / рдкреИрдХреЗрдЬрд╝рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдЬреЛ pdf.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рдореЗрд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pdf.js рдХреЛрдб рдЖрдпрд╛рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛, рддреЛ рдпрд╣ рдереЛрдбрд╝рд╛ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛрдЧрд╛ (рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди)ред

рдЕрднреА рддрдХ рд╣рдореЗрдВ рдПрдХ рдРрд╕рд╛ рдмреЙрд▓рд░ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЬреЛ рдареАрдХ рд╕реЗ рд╡реЗрдм рд╡рд░реНрдХрд░ рдХреЛ рдореИрдиреЗрдЬ рдХрд░рддрд╛ рд╣реЛ рдФрд░ рд╣рдо рд╡реЗрдмрдкреИрдХ рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд░ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ - рд╣рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛрдиреЛрдВ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдереАред

рд╕рдорд╛рдзрд╛рди рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдкреАрдбреАрдПрдл рдХреА рдХреБрд╢рд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рд╡реЗрдм рдХрд░реНрдордЪрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рддреЛ рдпреВрдЖрдИ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдиреБрдХрд╕рд╛рди рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рдЖрдкрдХрд╛ рд╡реНрдпрд╛рдкрд╛рд░ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдореИрдВрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдпрд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ

рдЖрдк рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЫреЛрдЯреЗ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдЖрдк рдЬреЛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдХреЗ рдЗрд░рд╛рджреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдХреЛрдб рдХреЗ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕реНрдирд┐рдкреЗрдЯ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВ: рд░рди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдФрд░ рдирд╣реАрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпред

рдореИрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред Https://cdn.kidoju.com/support/viewer/index.html рджреЗрдЦреЗрдВ
рдХреЛрдб https://github.com/kidoju/Kidoju-Help рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ build cmd рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдпрд╣ рднреА рджреЗрдЦреЗрдВ https://github.com/kidoju/Kidoju-Help/issues/2

рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдВрдбрд▓рд░реНрд╕ / рдкреИрдХреЗрдЬрд╝рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИред

рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ ЁЯСН

рдЕрднреА рддрдХ рд╣рдореЗрдВ рдПрдХ рдРрд╕рд╛ рдмреЙрд▓рд░ рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЬреЛ рдареАрдХ рд╕реЗ рд╡реЗрдм рд╡рд░реНрдХрд░ рдХреЛ рдореИрдиреЗрдЬ рдХрд░рддрд╛ рд╣реЛ рдФрд░ рд╣рдо рд╡реЗрдмрдкреИрдХ рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд░ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ - рд╣рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛрдиреЛрдВ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдереАред
рд╕рдорд╛рдзрд╛рди рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдкреАрдбреАрдПрдл рдХреА рдХреБрд╢рд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рд╡реЗрдм рдХрд░реНрдордЪрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рддреЛ рдпреВрдЖрдИ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдиреБрдХрд╕рд╛рди рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рдЖрдкрдХрд╛ рд╡реНрдпрд╛рдкрд╛рд░ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

@yurydelendik рдореИрдВ рд╡рд░реНрдХрд░-рд▓реЛрдбрд░ рд╣реИ рдФрд░ Browserify рдореЗрдВ рд╡реЗрдмрд╡рд░реНрдХ рд╣реИ -

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: https://github.com/mozilla/pdf.js/blob/master/src/display/api.js#L1132 , рд╡рд░реНрдХрд░ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рд░рд╛рд╕реНрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рд╡реЗрдмрдкреИрдХ рдореЗрдВ var worker = require('worker!../pdf.worker.entry.js') рдпрд╛
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ var worker = require('webworkerify')('../pdf.worker.entry.js') ред
рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЙрд╕ рдкрд░ рдирд┐рд╢рд╛рди рдорд╛рд░рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдЖрдк рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЫреЛрдЯреЗ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдЖрдк рдЬреЛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдХреЗ рдЗрд░рд╛рджреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдХреЛрдб рдХреЗ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕реНрдирд┐рдкреЗрдЯ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВ: рд░рди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдФрд░ рдирд╣реАрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпред

рд╕реНрдирд┐рдкреЗрдЯ рдЬреЛ рдореИрдВрдиреЗ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рд╕рднреА рдХреЛрдб рд╣реИ рдЬреЛ рдЕрднреА рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╣реЛрдЧрд╛ ( pdf-to-dataURL )ред рдореИрдВ рдПрдХ рддреНрд╡рд░рд┐рдд рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕ рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ @jlchereau рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ (рдПрдирдкреАрдПрдо рд╕реЗ pdfjs-dist рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд▓рдЧрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреА рд╕рдЯреАрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ)

Webpack рдореЗрдВ рд╡рд░реНрдХрд░-рд▓реЛрдбрд░ рд╣реИ рдФрд░ Browserify рдореЗрдВ webworkerify рд╣реИ - рдмрдВрдбрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛?

рд╣рд╛рдБ, рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ # рем, ,рел рдкрд░, рдмрд╛рдж рдореЗрдВ # рем and реп рез рдкрд░ рдФрд░ рдлрд┐рд░ рдЙрд╕реА рдкрд░ рдкрд▓рдЯрд╡рд╛рд░ рдХрд┐рдпрд╛ред Browserify рдореЗрдВ require('worker!... рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдФрд░ webpack рдореЗрдВ require('webworkerify')(...) ред

рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЙрд╕ рдкрд░ рдирд┐рд╢рд╛рди рдорд╛рд░рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рд╣рд╛рдБ, рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдкреАрдЖрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдЕрдм рддрдХ pdfjs-dist рдХрд┐рд╕реА рднреА рддрд░рд╣ webpack рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, system.js рдФрд░ node.js рдХреЗ рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд░рддрд╛ рд╣реИ; рдФрд░ рд╣рдо рдЗрд╕реЗ рдЗрд╕реА рддрд░рд╣ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдзрдиреНрдпрд╡рд╛рджред

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг (рд╕реБрд░рдХреНрд╖рд╛ рдпрд╛ рд╕рд┐рд░реНрдл рд╡рд┐рд░рд╛рд╕рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░) рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб рд▓реЛрдб рдХрд░реЗрдЧрд╛ред рдореИрдВ PDFWorker рдХреЗ рд▓рд┐рдП рдЕрддрд┐рднрд╛рд░рд┐рдд рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдПрдХ рд╡реЗрдм рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ - рдпрд╣ рдХреБрдЫ рд╡реЗрдмрдкреИрдХ / usecases рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

btw, рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдПрдВрдЯреНрд░реА-рд▓реЛрдбрд░ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рд╕реНрдХреИрди рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рд╣рд╛рдБ, рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ # рем, ,рел рдкрд░, рдмрд╛рдж рдореЗрдВ # рем and реп рез рдкрд░ рдФрд░ рдлрд┐рд░ рдЙрд╕реА рдкрд░ рдкрд▓рдЯрд╡рд╛рд░ рдХрд┐рдпрд╛ред рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ('рдХрд╛рд░реНрдпрдХрд░реНрддрд╛! ... рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ (' webworkerify ') (...) рд╡реЗрдмрдкреИрдХ рдореЗрдВред

рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЖрдкрдХрд╛ __webpack_require__ рдЪреЗрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛
https://github.com/mozilla/pdf.js/pull/6785/commits/79c2f69c3288494c5ce2809182c896484bf4be5c#diff -5a93a8d6c23cf0a169c6ee7347478ce8R88308 рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдХреИрд╕реЗ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ? (рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ ensure рд╣рд┐рд╕реНрд╕рд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛)

рд╣рд╛рдБ, рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдкреАрдЖрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдЕрдм рддрдХ pdfjs-dist рдХрд┐рд╕реА рднреА рддрд░рд╣ webpack рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, system.js рдФрд░ node.js рдХреЗ рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд░рддрд╛ рд╣реИ; рдФрд░ рд╣рдо рдЗрд╕реЗ рдЗрд╕реА рддрд░рд╣ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рд╢рд╛рдпрдж рдЕрдЧрд▓реЗ рд╣рдлреНрддреЗ рдмрд╛рдж рдореЗрдВ рдорд┐рд▓реВрдВрдЧрд╛ - рдХреНрдпрд╛ рд╡рд┐рднрд┐рдиреНрди рдмрдВрдбрд▓рд░реНрд╕ / рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реИ?

рдореИрдВ PDFWorker рдХреЗ рд▓рд┐рдП рдЕрддрд┐рднрд╛рд░рд┐рдд рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдПрдХ рд╡реЗрдм рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ - рдпрд╣ рдХреБрдЫ рд╡реЗрдмрдкреИрдХ / usecases рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛! рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдпрд╣ Worker рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╡реЗрдмрдкреИрдХ рд▓реЛрдЧ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╡реЗрдмрд╡рд░реНрдХрдЗрдЬрд╝- рд╡реЗрдмрдкреИрдХ рдФрд░ рд╡реЗрдмрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ
рдУрд╡рд░рд▓реЛрдб рдорд╛рдорд▓реЗ рдореЗрдВ var worker = new WorkerFromArgs('../pdf.worker.entry.js') ред
рдпрд╣ рдпреВрдЬрд░-рд▓реИрдВрдб рдореЗрдВ рд╡рд░реНрдХрд░ рд▓реЛрдбрд░ рд▓реЙрдЬрд┐рдХ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ рддрд╛рдХрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЧрдВрджреЗ PRs рдЬреЛ рдХрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо / рдмрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП pdf.js рдореЗрдВ рдЪреЗрдХ рдХрд░реЗрдВ, рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВ (рдпрд╣ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдЪрд┐рдд рд▓реЛрдбрд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░ рд╣реЛрдЧрд╛)

рдлрд┐рд░ рднреА рдореБрдЭреЗ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓рддреА рд╣реИ: рдирдХрд▓реА рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛ред ' рдореЗрд░реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЬрдм рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдиреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдпрд╣ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдмрд┐рдирд╛ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдХреЗ рдкрддрд╛ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреЗ рдФрд░ PR рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ?

@jlchereau рдиреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ https://github.com/mozilla/pdf.js/issues/7612#issuecomment -245973303 рдЬрд╣рд╛рдВ рдЖрдк рдЗрд╕реА рддрд░рд╣ рд╕рд╛рдВрддреНрд╡рдирд╛ рдореЗрдВ Warning: Setting up fake worker рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдЬрд╝рд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдПрдХ рдФрд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ

рдпрд╣ рдореБрджреНрджрд╛ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ workerSrc рдХреЛ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред
рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреАрдЖрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛, рддреЛ рдХреНрдпрд╛ рдЗрд╕реЗ рддрдм рддрдХ рдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рдирд╣реАрдВ рдЫреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореИрдВ рднреА рдкреАрдЖрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реБрдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ (рдЬрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдиреЗ __webpack_require__ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рддреЛ рд╢рд┐рдХрд╛рдпрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпреЛрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдкреАрдЖрд░ рдореЗрдВ рднреА рдХрд░реВрдВрдЧрд╛, рдФрд░ рдЕрдЧрд░ рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рд╣реЛ рддреЛ рдореБрдЭреЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рд╕рднреА рдмрдВрдбрд▓реЛрдВ / рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдПрдХ рд╕рд╛рде рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП)

@ agilgur5 , рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ:

The snippet I attached is all of the code that would be in the library for now (pdf-to-dataURL).
I could make a quick example that uses that snippet if <strong i="7">@jlchereau</strong>'s example isn't good enough
(it doesn't seem to require pdfjs-dist from NPM, so not sure about the accuracy of it).

Https://github.com/kidoju/Kidoju-Help/blob/master/src/main.js рдФрд░ рдЕрд╕рд╣рдЬрддрд╛ рджреЗрдЦреЗрдВ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдлрд┐рдЯ рджреЗрдЦрддреЗ рд╣реИрдВ:

require('../web/viewer.css');
require('../web/compatibility.js');
// require('pdfjs-dist/web/compatibility.js');
require('../web/l10n.js');
window.pdfjsDistBuildPdf = require('../build/pdf.js');
// window.pdfjsDistBuildPdf = require('pdfjs-dist/build/pdf.js');
// require('../web/debugger.js');
require('./viewer.js');

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рджреЛрдиреЛрдВ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг https://github.com/mozilla/pdf.js/blob/master/web/viewer.js рдФрд░ https://github.com/mozilla/pdfjs-dist/bitb/master/ рд╣реИред web / pdf_viewer.js рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдореИрдВрдиреЗ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕реНрд░реЛрдд / рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдорд╛рдирд╛ рд╣реИред

рд╡реИрд╕реЗ рднреА, рджреЛрдиреЛрдВ рдПрдХ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИред

@yurydelendik рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ @jlchereau рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЕрднреА рддрдХ рдЪреЗрдХ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рдмрдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдЫреЛрдЯреЗ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ pdf-to-dataURL рднреА рдмрдирд╛рдпрд╛ред

рдореИрдВ PDFWorker рдХреЗ рд▓рд┐рдП рдЕрддрд┐рднрд╛рд░рд┐рдд рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдПрдХ рд╡реЗрдм рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ - рдпрд╣ рдХреБрдЫ рд╡реЗрдмрдкреИрдХ / usecases рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИрдВ? рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЬреЛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдерд╛, рдЙрд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдЙрдкрд╛рдп рд╣реИ (рдЖрдкрдиреЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреВрдЫреЗ рдЧрдП рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ, рд╡реИрд╕реЗ рднреА рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреАрдЖрд░ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛) рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдФрд░ рдЕрдиреНрдп рдмрдВрдбрд▓реЛрдВред

рдореИрдВ рдЕрдкрдиреЗ рд╡реЗрдмрдкреИрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред рд╡реЗрдмрдкреИрдХ рдХреЗ рдмрдВрдбрд▓рд┐рдВрдЧ рдпрд╛ рд▓реЛрдбрд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдирд┐рд░реНрдорд╛рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реНрд░реЛрдд рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП CopyWebpackPlugin рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

рдореЗрд░реЗ рджрд░реНрд╢рдХ рдореЗрдВ:

import pdfjsLib from 'pdfjs-dist';

if (process.env.NODE_ENV !== 'production') {
   //in dev, get it from the node_modules directory
   //NOTE: don't use the "entry" file -- the script will fail and the web worker will not be used
   pdfjsLib.PDFJS.workerSrc = `${process.env.APP_ROOT}/node_modules/pdfjs-dist/build/pdf.worker.js`;
} else {
   //in prod, get it from the build directory
   pdfjsLib.PDFJS.workerSrc = `${process.env.APP_ROOT}/build/pdf.worker.js`;
}

webpack.config.js :

const CopyWebpackPlugin = require('copy-webpack-plugin');

return {
   //... rest of config omitted
   plugins: [{
      new CopyWebpackPlugin([{
         from: 'node_modules/pdfjs-dist/build/pdf.worker.js',
         to: 'pdf.worker.js'
      }])
   }]
}

@ agilgur5 , рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рдЗрд╕рд▓рд┐рдП рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХреЙрдордиреНрд╕рдЪрдВрдХрдкреНрд▓рдЧрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗрдмрд╡рд░реНрдХ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди Uncaught ReferenceError: webpackJsonp is not defined рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ (рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдХреЛрдб рдПрдХ рдЖрдо рдардЧ рдХреЗ рд▓рд┐рдП рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдерд╛)ред рдЗрд╕рдХреЗ рдХрд╛рд░рдг рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдирдХрд▓реА рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХрдореА рдЖрдИред

рдЖрдк рдпрд╛ рддреЛ CommonsChuckPlugin рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╕реБрдЭрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рди @ctowler рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрд╢рд╛ рд╣реИ рдЗрд╕рд╕реЗ рддреБрдореНрд╣рд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реЛрдЧрд╛ред

рд╕рднреА рдХреЛ рдкреНрд░рдгрд╛рдо,
рдореИрдВ Webpack рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ pdf.js рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рдореЗрдВ рд╣реЛред

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рдЬреИрд╕реЗ:

  • Warning: Setting up fake worker. рд╕рдВрджреЗрд╢,
  • рдЧреИрд░-рдХрд╛рд░реНрдпрд╛рддреНрдордХ PDF.js рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдЯреНрд░реИрд╢ рдмрдВрдбрд▓ рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╡реЗрдмрдкреИрдХ,
  • рдмрдВрдбрд▓ рдореЗрдВ рджреЛ рдмрд╛рд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕рд╣рд┐рдд рд╡реЗрдмрдкреИрдХ,
    рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрд░рдорд╢рдГ

  1. рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ raw-loader рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ред рд╕реАрдзреЗ рд╕рд╛рджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдПред

    "raw-loader": "latest",
    
  2. рдореИрдВрдиреЗ Webpack рдХреЛ рдПрдХ рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ pdf.worker.js raw-loader рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рд╣реЛред

      module: {
        rules: [
          {
            test: /pdf\.worker(\.min)?\.js$/,
            use: 'raw-loader',
          },
          {
            test: /\.(js|jsx)$/,
            exclude: [/node_modules/, /pdf\.worker(\.min)?\.js$/],
            use: 'babel-loader',
          },
        ],
      },
    
  3. рдореБрд╢реНрдХрд┐рд▓ рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ PDF.js рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ workerSrc рд╕реЗрдЯрд┐рдВрдЧ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕рд╛рдорд╛рди рдХреА рддрд░рд╣ рдХрд░ рд░рд╣реА рд╣реИ

    pdfjsLib.PDFJS.workerSrc = require('pdfjs-dist/build/pdf.worker');
    

    рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
    рдкрд░рдВрддреБ! рд╣рдо Blob s рд╕реЗ рдордХреНрдЦреА рдкрд░ URL рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдордХреНрдЦреА рдкрд░ рддрд╛рд░ рд╕реЗ Blob s рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ!
    рддреЛ, рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдорд╛рдзрд╛рди рдерд╛:

    const pdfjsLib = require('pdfjs-dist');
    const pdfjsWorker = require('pdfjs-dist/build/pdf.worker.min');
    
    const pdfjsWorkerBlob = new Blob([pdfjsWorker]);
    const pdfjsWorkerBlobURL = URL.createObjectURL(pdfjsWorkerBlob);
    
    pdfjsLib.PDFJS.workerSrc = pdfjsWorkerBlobURL;
    

    ЁЯОЙ: рдбреА

  4. рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ рдмрд╛рддред PDF.js рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдХрдорд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ, рдЕрдЧрд░ рдХрд░реНрдореА рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛрддреА рд╣реИ:
    js require.ensure([], function () { var worker; worker = require('./pdf.worker.js'); callback(worker.WorkerMessageHandler); });
    рдпрджрд┐ рдЖрдк рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ pdf.worker.min рд╣реИрдВ, рддреЛ Webpack рднреНрд░рдорд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕ рд╕рд╛рдорд╛рди рдХреА рд╡рдЬрд╣ рд╕реЗ pdf.worker.js рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдФрд░ рднреА рдмрджрддрд░ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ PDF.js рдХрд╛ рдЫреЛрдЯрд╛ pdf.worker.js рд▓рд┐рдП рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рддреЛ рд╣рдо рдЗрд╕ рдмрдХрд╡рд╛рд╕ рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯ рд╕рдХрддреЗ рд╣реИрдВ?
    рд╣рдо рд╡реЗрдмрдкреИрдХ рдХреЛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:
    js new webpack.NormalModuleReplacementPlugin( /pdf\.worker(\.min)?\.js$/, path.join(__dirname, 'node_modules', 'pdfjs-dist', 'build', 'pdf.worker.min.js'), ),
    рдЬреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ /pdf\.worker(\.min)?\.js$/ - рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, pdf.worker.js рдФрд░ pdf.worker.min.js рдкреНрд░рддрд┐рднреВрддрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЬрд╛рдПрдЧреАред

рдУрд╣ред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЛ рднреА рдорджрдж рдХрд░рддрд╛ рд╣реИ!

@wojtekmaj рд╣рдордиреЗ рд╡реЗрдмрдкреИрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП pdfjs-dist / webpack рдЬреЛрдбрд╝рд╛ред рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ https://github.com/yurydelendik/pdfjs-react рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ

@yurydelendik рдзрдиреНрдпрд╡рд╛рдж, рд╣рд╛рдБ, рдореБрдЭреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдореИрдВ рдХрдИ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╕рдВрдХрд▓рд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдкреАрдбреАрдПрдл рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реБрдкрд░ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред package.json + рдЖрдпрд╛рдд, рдЙрдЫрд╛рд▓, рдФрд░ рдХреБрдЫ рдирд╣реАрдВред

рдРрд╕рд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЙрдирд╕реЗ рдЦреБрдж рд╣реА pdf.worker.js рдлрд┐рдЧрд░ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХреВрдВ, рдЕрдХреЗрд▓реЗ рд╣реА рд╡реЗрдмрдкреИрдХ, рдмреНрд░рд╛рдЙрдЬрд░ рдФрд░ рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рд▓рд┐рдЦ рджреЗрдВред

рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реБрдкрд░ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред package.json + рдЖрдпрд╛рдд, рдЙрдЫрд╛рд▓, рдФрд░ рдХреБрдЫ рдирд╣реАрдВред

@wojtekmaj рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ pdfjs-dist рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП рдФрд░ pdfjs-dist / webpack рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд┐рд░реНрдл рдкреВрд░реНрд╡ (рдПрдХ рдШрдЯрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛) рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдЧрд╛ред

рдПрдХ рд╕рдВрдХрд▓рд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдПрдХ рд╕рдВрдХрд▓рд┐рдд рдлрд╝рд╛рдЗрд▓ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ: рдХ) рдкреЗрдЬ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рд▓рд┐рдП, рдЦ) рдХреИрд╢рд┐рдВрдЧ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдЖрдХрд╛рд░, рдЧ) рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ - рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреА рдкрд╕рдВрдж рд╣реИред

@yurydelendik
рдУрд╣, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдЖрдкрдХреА рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдХреЛ рдЧрд▓рдд рдмрддрд╛рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЖрдк / рдЙрджрд╛рд╣рд░рдг / рд╡реЗрдмрдкреИрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдмрд╛рдд рд╣реИред рдкреАрдбреАрдПрдлрдЬреЗ / рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП! рдзрдиреНрдпрд╡рд╛рдж!

рдПрдХ рдФрд░ рдмрд╛рдд ... pdfjs-dist / webpack рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ pdf.js рд╣реА рдирд╣реАрдВ рд░реБрдХрддрд╛ рд╣реИред pdf.worker.js рдХреЛ рдЕрдкрдиреЗ рдЖрдк рд╣реА рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реВрдВ:

  • entry.bundle.js
  • abcdef1234567890.worker.bundle.js

рдЬрдм рдореИрдВ pdf.worker рдХреЛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдФрд░ рднреА рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реВрдВ:

  • entry.bundle.js
  • abcdef1234567890.worker.bundle.js
  • pdf.worker.bundle.js

рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реВрдВ?

рдКрдкрд░ рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдкреАрдбреАрдПрдл рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде yarn build рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╛рдЗрд▓реЗрдВ рдорд┐рд▓реА рд╣реИрдВ:

...
File sizes after gzip:

  198.42 KB  build/7b14afe24b211632ecc8.worker.js
  197.76 KB  build/static/js/0.974e8de4.chunk.js
  130.14 KB  build/static/js/main.5a79c9e3.js
  4.19 KB    build/static/css/main.d852b162.css
...

рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ: рдРрдк 'build / static / js / main.5a79c9e3.js' рд╕рд╛рдорд╛рди (pdf.js рдкреНрд▓рд╕ рд░рд┐рдПрдХреНрд╢рди), 'build / static / js / 0.974e8de4.chunk.js' 'pdf.worker.js рдлрд╝реЙрд▓рдмреИрдХ рдХреЛрдб рд╣реИ рдЬрдм рд╢реНрд░рдорд┐рдХ рдЕрдХреНрд╖рдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ '7b14afe24b211632ecc8.worker.js' рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛрдб рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рднреВрд▓ рд░рд╣рд╛ рд╣реВрдБ?

@wojtekmaj рдХреГрдкрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдРрдк рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ (рдЙрджрд╛рд╣рд░рдг?) рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдПрд╕рдЯреАрдЖрд░ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рдореБрджреНрджреЗ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВ - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред

PDFJS.workerSrc = 'script.bundle.js';
PDFJS.getDocument (getPdfName) рддреЛ рдлрд┐рд░ ((pdfFile: рдХрд┐рд╕реА рднреА) => {
this.pdfFile = pdfFile;
this.renderPdfIntoPages (pdfFile, getPdfPages, this.pdfReady);
});

рдореВрд▓реНрдп рдЗрд╕ рддрд░рд╣ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ рддреЛ рдЗрд╕рдХреЗ рдХрд╛рдо ...

рдзрдиреНрдпрд╡рд╛рдж...

@Yurydelendik рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ window рди рдорд┐рд▓реЗ рддреЛ рдХреГрдкрдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЛ рди рдбрд╛рд▓реЗрдВ

globalObject: 'true'

рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ output рдЦрдВрдб рдореЗрдВред
рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдПрдХ рдмрдЧ рд▓рдЧрддрд╛ рд╣реИ, рд╡реЗрдмрдкреИрдХ window рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдХрд░рддрд╛ рд╣реИ рдЬрдм web workers рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рддреЛ рдЙрдкрд░реЛрдХреНрдд рд╣реИрдХ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

@wojtekmaj :
рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдХреНрд░реЛрдо, рдПрдлрдПрдл, рдПрдЬ, рдУрдкреЗрд░рд╛, рд╕рдлрд╛рд░реА рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ babel-loader рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕реЗ ES5 рдореЗрдВ рд╡рд╛рдкрд╕ рдЯреНрд░рд╛рдВрд╕рдкреНтАНрд▓реЗрдиреНтАНрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рдореИрдВ IE11 рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдФрд░ рдЗрддрдиреЗ рдкрд░ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╛ рдореИрдВ рд╡рд╣рд╛рдБ рдХреБрдЫ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдБ?

рдореИрдВ рдпрд╣рд╛рдВ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдУрд╣ рд╕реНрдорд╛рд░реНрдЯ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рд╣реА рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ @wojtekmaj рдХреА

Webpack.config рдореЗрдВ:

...
{
    test: /pdf\.worker(\.min)?\.js$/,
    loader: 'file-loader'
},

рдФрд░ рдлрд┐рд░, рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ:

import PDFJS from 'pdfjs-dist';
import PDFJSWorker from 'pdfjs-dist/build/pdf.worker.min';

PDFJS.GlobalWorkerOptions.workerSrc = PDFJSWorker;
...

рд╡рд┐рдиреНрдпрд╛рд╕:

  • pdfjs-dist: 2.1.266
  • рд╡реЗрдмрдкреИрдХ: 4.35.0

рдЕрд░реЗ, рдореБрдЭреЗ рд╡реЗрдмрдкреИрдХ рдФрд░ pdfjs (рдФрд░ рдпрд╣ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдкрд░реЗрд╢рд╛рдиреА рдереАред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ (рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ pdfjs рдХреБрдЫ рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ)

рд╡реЗрдмрдкреИрдХ рд╕рд╛рдорд╛рди рдХреЗ рдХрд╛рд░рдг, рдореБрдЭреЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реБрдИ:

image

рдореБрдЭреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред
seller_pdfjsWorker рдореМрдЬреВрдж рдерд╛ рд▓реЗрдХрд┐рди рдЗрд╕ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдирд╣реАрдВ рдерд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЙрд╕реА рдЬрдЧрд╣ рдкрд░ рд╣реЛ рдЬрд╣рд╛рдВ pdf.js рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рд╡рд░реНрдХрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреИрд╕рд╛ рдХрд┐ wojtekmaj рдиреЗ рд╕рдордЭрд╛рдпрд╛ред рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдПрд╕рдПрд╕рдбрдмреНрд▓реНрдпреВрдЬреЗрдПрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡реЗрдмрдкреИрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди pdfjs (l.9915):

  if (typeof window === 'undefined') {
    isWorkerDisabled = true;

    if (typeof require.ensure === 'undefined') {
      require.ensure = require('node-ensure');
    }

    useRequireEnsure = true;
  } else if (typeof require !== 'undefined' && typeof require.ensure === 'function') {
    useRequireEnsure = true;
  }

рдЬрд╛рдВрдЪ

  if (typeof window === 'undefined') {
    isWorkerDisabled = true;

    if (typeof require.ensure === 'undefined') {
      require.ensure = require('node-ensure');
    }

    useRequireEnsure = true;
  } else if (true) {
    useRequireEnsure = true;
  }

рддреЛ, рдирдХрд▓реА рд╡реЙрд░реНрдХрд░рдлрд╛рдЗрд▓реНрд╕рд▓реИрдбрд░ рд╕реЗрдЯ рд╣реИ (l.9932):
fakeWorkerFilesLoader = useRequireEnsure ? function () {

рддрдм, рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдирдХрд▓реА рдХрд╛рд░рдг рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ

    var loader = fakeWorkerFilesLoader || function () {
      return (0, _dom_utils.loadScript)(_getWorkerSrc()).then(function () {
        return window.pdfjsWorker.WorkerMessageHandler;
      });
    };

рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛

рдЕрдкрдиреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛрдбрд╝рд╛:

    module: {
        noParse: (filename) => {
            return /\\node_modules\\pdfjs-dist\\build\\pdf.js/.test(filename);
        },
        rules: [
        .......................
        ]
    },

рдФрд░ рддрдм рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рдереА:
image

рдпрд╣ рдореБрдЭреЗ рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ "ecm_viewer.worker.js" рдмрддрд╛рддреА рд╣реИ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝реА:

entry: {
    'ecm_viewer': getFileList(),
    'ecm_viewer.worker': './node_modules/pdfjs-dist/build/pdf.worker.entry',
}

рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдореИрдВ noParse рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣рдЯрд╛ рджреВрдВред рдЬрдм рддрдХ рдореИрдВ рдЗрд╕ noParse рд╡реЗрдмрдкреИрдХ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рддрдм рддрдХ рдореИрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рд╣реВрдБ; рдореИрдВ рдЕрдкрдиреЗ рдкреЛрд╕реНрдЯ рдХреЛ рд╕реНрдЯреИрдХреНрд╡реЛрд╡рд░рдлрд╝реНрд▓реЛ рдпрд╛ рдХрд╣реАрдВ рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдпрд╣ рдПрдХ рджрд┐рди рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдЕрдкрдиреЗ рд╡реЗрдмрдкреИрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред рд╡реЗрдмрдкреИрдХ рдХреЗ рдмрдВрдбрд▓рд┐рдВрдЧ рдпрд╛ рд▓реЛрдбрд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдирд┐рд░реНрдорд╛рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реНрд░реЛрдд рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП CopyWebpackPlugin рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

рдореЗрд░реЗ рджрд░реНрд╢рдХ рдореЗрдВ:

import pdfjsLib from 'pdfjs-dist';

if (process.env.NODE_ENV !== 'production') {
   //in dev, get it from the node_modules directory
   //NOTE: don't use the "entry" file -- the script will fail and the web worker will not be used
   pdfjsLib.PDFJS.workerSrc = `${process.env.APP_ROOT}/node_modules/pdfjs-dist/build/pdf.worker.js`;
} else {
   //in prod, get it from the build directory
   pdfjsLib.PDFJS.workerSrc = `${process.env.APP_ROOT}/build/pdf.worker.js`;
}

webpack.config.js :

const CopyWebpackPlugin = require('copy-webpack-plugin');

return {
   //... rest of config omitted
   plugins: [{
      new CopyWebpackPlugin([{
         from: 'node_modules/pdfjs-dist/build/pdf.worker.js',
         to: 'pdf.worker.js'
      }])
   }]
}

рдпрд╣ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рдЯреАрдо WEEKS рдХреЗ рд▓рд┐рдП рд╢рд┐рдХрд╛рд░ рд╣реЛ рд░рд╣реА рд╣реИред рд╕рд╛рднрд╛рд░ @ctowler : D <3

@Yurydelendik рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ window рди рдорд┐рд▓реЗ рддреЛ рдХреГрдкрдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЛ рди рдбрд╛рд▓реЗрдВ

globalObject: 'true'

рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ output рдЦрдВрдб рдореЗрдВред
рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдПрдХ рдмрдЧ рд▓рдЧрддрд╛ рд╣реИ, рд╡реЗрдмрдкреИрдХ window рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдХрд░рддрд╛ рд╣реИ рдЬрдм web workers рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рддреЛ рдЙрдкрд░реЛрдХреНрдд рд╣реИрдХ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

@vivektiwary рдореИрдВ рдЙрд╕реА рдореБрджреНрджреЗ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ ReferenceError: Can't find variable: window рдХрд╣рддрд╛ рд░рд╣рддрд╛ рд╣реИ

рдореИрдВрдиреЗ Webpack.config рдлрд╝рд╛рдЗрд▓ рдореЗрдВ globalObject:'true' рд╕реЗрдЯрд┐рдВрдЧ рдХреА рдереА, рд▓реЗрдХрд┐рди рдЕрдм рдРрдк рдмрд┐рд▓реНрдХреБрд▓ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ?

@Yurydelendik рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ window рди рдорд┐рд▓реЗ рддреЛ рдХреГрдкрдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЛ рди рдбрд╛рд▓реЗрдВ

globalObject: 'true'

рдЖрдкрдХреЗ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ output рдЦрдВрдб рдореЗрдВред
рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдПрдХ рдмрдЧ рд▓рдЧрддрд╛ рд╣реИ, рд╡реЗрдмрдкреИрдХ window рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдХрд░рддрд╛ рд╣реИ рдЬрдм web workers рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рддреЛ рдЙрдкрд░реЛрдХреНрдд рд╣реИрдХ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

@vivektiwary рдореИрдВ рдЙрд╕реА рдореБрджреНрджреЗ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ ReferenceError: Can't find variable: window рдХрд╣рддрд╛ рд░рд╣рддрд╛ рд╣реИ

рдореИрдВрдиреЗ Webpack.config рдлрд╝рд╛рдЗрд▓ рдореЗрдВ globalObject:'true' рд╕реЗрдЯрд┐рдВрдЧ рдХреА рдереА, рд▓реЗрдХрд┐рди рдЕрдм рдРрдк рдмрд┐рд▓реНрдХреБрд▓ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ?

рд╣рд╛рдВ @taihuuho , рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЗрд╕реЗ
btw рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдорд┐рд▓ рд░рд╣реА рд╣реИ?

@vivektiwary рдореИрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИ ReferenceError: Can't find variable: window рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХрд┐ pdfjs-dist/webpack

рдореИрдВ рдпрд╣рд╛рдВ рдХреБрдЫ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдУрд╣ рд╕реНрдорд╛рд░реНрдЯ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рд╣реА рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ @wojtekmaj рдХреА

Webpack.config рдореЗрдВ:

...
{
    test: /pdf\.worker(\.min)?\.js$/,
    loader: 'file-loader'
},

рдФрд░ рдлрд┐рд░, рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ:

import PDFJS from 'pdfjs-dist';
import PDFJSWorker from 'pdfjs-dist/build/pdf.worker.min';

PDFJS.GlobalWorkerOptions.workerSrc = PDFJSWorker;
...

рдореИрдВрдиреЗ @varunarora рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рд╡реЗрдмрдкреИрдХ https://github.com/mozilla/pdf.js/tree/master/examples/webpack рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреНрд░рд▓реЗрдЦрди рдкреГрд╖реНрда рд╕рднреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛:

PDFJS.GlobalWorkerOptions.workerSrc = require('!!file-loader!pdfjs-dist/build/pdf.worker.min.js').default;

рдпрд╛

import PDFJS from 'pdfjs-dist';
import PDFJSWorker from '!!file-loader!pdfjs-dist/build/pdf.worker.min.js';

PDFJS.GlobalWorkerOptions.workerSrc = PDFJSWorker;

рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ file-loader рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВред

рдореИрдВ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди-рдлреЛрд░реНрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдлрд╛рдЗрд▓-рд▓реЛрдбрд░ рдХреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрдирд╛ рдкрдбрд╝рд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛

PDFJS.GlobalWorkerOptions.workerSrc = '../' + require('!!file-loader!pdfjs-dist/build/pdf.worker.min.js').default;

https://webpack.js.org/concepts/loaders/#inline

рдлрд╝рд╛рдЗрд▓-рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдореЗрд░реЗ рдРрдк рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдкрд░ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдп рд▓рд┐рдмреНрд░рд┐рд░рд┐рдпреЛрдВ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рддреЛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓рд╛ рд╡рд╣ рд╣реИ cdn рд╕реЗ pdf.worker.js рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛:

рд╕реАрдПрдл рдпрд╣рд╛рдБ: https://github.com/wojtekmaj/react-pdf/issues/321#issuecomment -451291757

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
5 / 5 - 1 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

timvandermeij picture timvandermeij  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jigskpatel picture jigskpatel  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

patelsumit5192 picture patelsumit5192  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kleins05 picture kleins05  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

AlexP3 picture AlexP3  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ