UNPKG

node-signpdf

Version:

DEPRECATED. Have a look at @signpdf/signpdf instead.

54 lines (42 loc) 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _SignPdfError = _interopRequireDefault(require("../../SignPdfError")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const xrefToRefMap = xrefString => { const lines = xrefString.split('\n').filter(l => l !== ''); let index = 0; let expectedLines = 0; const xref = new Map(); lines.forEach(line => { const split = line.split(' '); if (split.length === 2) { index = parseInt(split[0]); expectedLines = parseInt(split[1]); return; } if (expectedLines <= 0) { throw new _SignPdfError.default('Too many lines in xref table.', _SignPdfError.default.TYPE_PARSE); } expectedLines -= 1; const [offset,, inUse] = split; if (inUse.trim() === 'f') { index += 1; return; } if (inUse.trim() !== 'n') { throw new _SignPdfError.default(`Unknown in-use flag "${inUse}". Expected "n" or "f".`, _SignPdfError.default.TYPE_PARSE); } if (!/^\d+$/.test(offset.trim())) { throw new _SignPdfError.default(`Expected integer offset. Got "${offset}".`, _SignPdfError.default.TYPE_PARSE); } const storeOffset = parseInt(offset.trim()); xref.set(index, storeOffset); index += 1; }); return xref; }; var _default = xrefToRefMap; exports.default = _default;