overleaf/services/clsi/app/lib/pdfjs/parseXrefTable.js
Jakob Ackermann dd5128c1d7 Merge pull request #8952 from overleaf/jpa-pdf-caching-tweaks
[clsi] server side pdf caching tweaks

GitOrigin-RevId: 758cbcc45b5a7ca0fe3dbf31bc43d9b0ef36e599
2022-07-21 08:04:41 +00:00

29 lines
820 B
JavaScript

const fs = require('fs')
const { FSPdfManager } = require('./FSPdfManager')
async function parseXrefTable(path, size, checkDeadline) {
if (size === 0) {
return []
}
const file = await fs.promises.open(path)
try {
const manager = new FSPdfManager(0, { fh: file, size, checkDeadline })
await manager.ensureDoc('checkHeader')
checkDeadline('pdfjs: after checkHeader')
await manager.ensureDoc('parseStartXRef')
checkDeadline('pdfjs: after parseStartXRef')
await manager.ensureDoc('parse')
checkDeadline('pdfjs: after parse')
const xRefEntries = manager.pdfDocument.xref.entries || []
const startXRefTable = manager.pdfDocument.xref.topDict?.get('Prev')
return { xRefEntries, startXRefTable }
} finally {
file.close()
}
}
module.exports = {
parseXrefTable,
}