UNPKG

@signpdf/placeholder-plain

Version:

Try to add a signature placeholder to a PDF using plain string modifications.

24 lines (22 loc) 1.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; /** * @param {Buffer} pdf * @param {import("./readPdf").ReadPdfReturnType} info * @param {Map<number, number>} addedReferences * @returns {Buffer} */ const createBufferTrailer = (pdf, info, addedReferences) => { let rows = []; rows[0] = '0000000000 65535 f '; // info.xref.tableRows[0]; addedReferences.forEach((offset, index) => { const paddedOffset = `0000000000${offset}`.slice(-10); rows[index + 1] = `${index} 1\n${paddedOffset} 00000 n `; }); rows = rows.filter(row => row !== undefined); return Buffer.concat([Buffer.from('xref\n'), Buffer.from(`${info.xref.startingIndex} 1\n`), Buffer.from(rows.join('\n')), Buffer.from('\ntrailer\n'), Buffer.from('<<\n'), Buffer.from(`/Size ${info.xref.maxIndex + 1}\n`), Buffer.from(`/Root ${info.rootRef}\n`), Buffer.from(info.infoRef ? `/Info ${info.infoRef}\n` : ''), Buffer.from(`/Prev ${info.xRefPosition}\n`), Buffer.from('>>\n'), Buffer.from('startxref\n'), Buffer.from(`${pdf.length}\n`), Buffer.from('%%EOF')]); }; var _default = exports.default = createBufferTrailer;