UNPKG

chainscript

Version:
68 lines (49 loc) 1.64 kB
'use strict'; exports.__esModule = true; exports['default'] = writeToPDF; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); /** * This could be improved by not putting the entire PDF in a buffer. */ function writeToPDF(input, output, script) { return new Promise(function (resolve, reject) { var reader = typeof input === 'string' ? _fs2['default'].createReadStream(input) : input; var buffer = new Buffer([]); reader.on('error', reject); reader.on('data', function (data) { return buffer = Buffer.concat([buffer, data]); }); reader.on('end', function () { var start = buffer.indexOf('\n% Chainscript: '); var end = undefined; if (start < 0) { var pos = 0; do { pos = buffer.indexOf('startxref', pos + 9); if (pos >= 0) { start = end = pos; } } while (pos >= 0); if (start < 0) { reject(new Error('Could not find startxref')); return; } } else { end = buffer.indexOf('\n', start + 16) + 1; } var writer = typeof output === 'string' ? _fs2['default'].createWriteStream(output, { defaultEncoding: 'binary', mode: 420 }) : output; writer.on('error', reject); writer.write(buffer.slice(0, start)); if (script) { writer.write('\n% Chainscript: ' + JSON.stringify(script) + '\n'); } writer.end(buffer.slice(end), resolve); }); }); } module.exports = exports['default'];