FSPdfManager.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. const { PDFDocument } = require('pdfjs-dist/lib/core/document')
  2. const { LocalPdfManager } = require('pdfjs-dist/lib/core/pdf_manager')
  3. const { MissingDataException } = require('pdfjs-dist/lib/core/core_utils')
  4. const { FSStream } = require('./FSStream')
  5. class FSPdfManager extends LocalPdfManager {
  6. constructor(docId, { fh, size, checkDeadline }) {
  7. const nonEmptyDummyBuffer = Buffer.alloc(1, 0)
  8. super(docId, nonEmptyDummyBuffer)
  9. this.stream = new FSStream(fh, 0, size, null, null, checkDeadline)
  10. this.pdfDocument = new PDFDocument(this, this.stream)
  11. }
  12. async ensure(obj, prop, args) {
  13. try {
  14. const value = obj[prop]
  15. if (typeof value === 'function') {
  16. return value.apply(obj, args)
  17. }
  18. return value
  19. } catch (ex) {
  20. if (!(ex instanceof MissingDataException)) {
  21. throw ex
  22. }
  23. await this.requestRange(ex.begin, ex.end)
  24. return this.ensure(obj, prop, args)
  25. }
  26. }
  27. requestRange(begin, end) {
  28. return this.stream.requestRange(begin, end)
  29. }
  30. requestLoadedStream() {}
  31. onLoadedStream() {}
  32. terminate(reason) {}
  33. }
  34. module.exports = {
  35. FSPdfManager,
  36. }