parseXrefTable.js 820 B

1234567891011121314151617181920212223242526272829
  1. const fs = require('fs')
  2. const { FSPdfManager } = require('./FSPdfManager')
  3. async function parseXrefTable(path, size, checkDeadline) {
  4. if (size === 0) {
  5. return []
  6. }
  7. const file = await fs.promises.open(path)
  8. try {
  9. const manager = new FSPdfManager(0, { fh: file, size, checkDeadline })
  10. await manager.ensureDoc('checkHeader')
  11. checkDeadline('pdfjs: after checkHeader')
  12. await manager.ensureDoc('parseStartXRef')
  13. checkDeadline('pdfjs: after parseStartXRef')
  14. await manager.ensureDoc('parse')
  15. checkDeadline('pdfjs: after parse')
  16. const xRefEntries = manager.pdfDocument.xref.entries || []
  17. const startXRefTable = manager.pdfDocument.xref.topDict?.get('Prev')
  18. return { xRefEntries, startXRefTable }
  19. } finally {
  20. file.close()
  21. }
  22. }
  23. module.exports = {
  24. parseXrefTable,
  25. }