pdf-js.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import '@/utils/abortsignal-polyfill'
  2. import * as PDFJS from 'pdfjs-dist'
  3. import type { DocumentInitParameters } from 'pdfjs-dist/types/src/display/api'
  4. export { PDFJS }
  5. PDFJS.GlobalWorkerOptions.workerPort = new Worker(
  6. /* webpackChunkName: "pdf-worker" */
  7. new URL('pdfjs-dist/build/pdf.worker.mjs', import.meta.url) // NOTE: .mjs extension
  8. )
  9. export const imageResourcesPath = '/images/pdfjs-dist/'
  10. const cMapUrl = '/js/pdfjs-dist/cmaps/'
  11. const wasmUrl = '/js/pdfjs-dist/wasm/'
  12. const iccUrl = '/js/pdfjs-dist/iccs/'
  13. const standardFontDataUrl = '/fonts/pdfjs-dist/'
  14. const params = new URLSearchParams(window.location.search)
  15. const disableFontFace = params.get('disable-font-face') === 'true'
  16. const disableStream = process.env.NODE_ENV !== 'test'
  17. export const loadPdfDocumentFromUrl = (
  18. url: string,
  19. options: Partial<DocumentInitParameters> = {}
  20. ) =>
  21. PDFJS.getDocument({
  22. url,
  23. cMapUrl,
  24. wasmUrl,
  25. iccUrl,
  26. standardFontDataUrl,
  27. disableFontFace,
  28. disableAutoFetch: true, // only fetch the data needed for the displayed pages
  29. disableStream,
  30. isEvalSupported: false,
  31. enableXfa: false, // default is false (2021-10-12), but set explicitly to be sure
  32. ...options,
  33. })