pdf-js-versions.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // To add a new version, copy and adjust one of the `importPDFJS*` functions below,
  2. // add the variant to the "switch" statement, and add to `pdfjsVersions` in webpack.config.js
  3. import 'core-js/stable/global-this' // polyfill for globalThis (used by pdf.js)
  4. import 'core-js/stable/promise/all-settled' // polyfill for Promise.allSettled (used by pdf.js)
  5. import 'core-js/stable/structured-clone' // polyfill for global.StructuredClone (used by pdf.js)
  6. import 'core-js/stable/array/at' // polyfill for Array.prototype.at (used by pdf.js)
  7. import getMeta from '@/utils/meta'
  8. import { createWorker } from '@/utils/worker'
  9. async function importPDFJS401() {
  10. const cMapUrl = '/js/pdfjs-dist401/cmaps/'
  11. const standardFontDataUrl = '/fonts/pdfjs-dist401/'
  12. const imageResourcesPath = '/images/pdfjs-dist401/'
  13. // ensure that PDF.js is loaded before importing the viewer
  14. const PDFJS = await import('pdfjs-dist401/legacy/build/pdf')
  15. const [PDFJSViewer] = await Promise.all([
  16. import('pdfjs-dist401/legacy/web/pdf_viewer'),
  17. import('pdfjs-dist401/legacy/web/pdf_viewer.css'),
  18. ])
  19. createWorker(() => {
  20. PDFJS.GlobalWorkerOptions.workerPort = new Worker(
  21. new URL('pdfjs-dist401/legacy/build/pdf.worker.mjs', import.meta.url) // NOTE: .mjs extension
  22. )
  23. })
  24. return {
  25. PDFJS,
  26. PDFJSViewer,
  27. cMapUrl,
  28. imageResourcesPath,
  29. standardFontDataUrl,
  30. }
  31. }
  32. async function importPDFJS213() {
  33. const cMapUrl = '/js/pdfjs-dist213/cmaps/'
  34. const standardFontDataUrl = '/fonts/pdfjs-dist213/'
  35. const imageResourcesPath = '/images/pdfjs-dist213/'
  36. // ensure that PDF.js is loaded before importing the viewer
  37. const PDFJS = await import('pdfjs-dist213/legacy/build/pdf')
  38. const [PDFJSViewer] = await Promise.all([
  39. import('pdfjs-dist213/legacy/web/pdf_viewer'),
  40. import('pdfjs-dist213/legacy/web/pdf_viewer.css'),
  41. ])
  42. createWorker(() => {
  43. PDFJS.GlobalWorkerOptions.workerPort = new Worker(
  44. new URL('pdfjs-dist213/legacy/build/pdf.worker.js', import.meta.url)
  45. )
  46. })
  47. return {
  48. PDFJS,
  49. PDFJSViewer,
  50. cMapUrl,
  51. imageResourcesPath,
  52. standardFontDataUrl,
  53. }
  54. }
  55. async function importPDFJS() {
  56. const variant = getMeta('ol-pdfjsVariant', 'default')
  57. // NOTE: split test variants must have at least 3 characters
  58. switch (variant) {
  59. case '213':
  60. case 'default':
  61. return importPDFJS213()
  62. case '401':
  63. return importPDFJS401()
  64. }
  65. }
  66. export default importPDFJS()