UNPKG

pdfmake

Version:

Client/server side PDF printing in pure JavaScript

64 lines (59 loc) 1.43 kB
"use strict"; exports.__esModule = true; exports.default = void 0; class OutputDocument { /** * @param {Promise<object>} pdfDocumentPromise */ constructor(pdfDocumentPromise) { this.bufferSize = 1073741824; this.pdfDocumentPromise = pdfDocumentPromise; this.bufferPromise = null; } /** * @returns {Promise<object>} */ getStream() { return this.pdfDocumentPromise; } /** * @returns {Promise<Buffer>} */ getBuffer() { const getBufferInternal = async () => { const stream = await this.getStream(); return new Promise(resolve => { let chunks = []; stream.on('readable', () => { let chunk; while ((chunk = stream.read(this.bufferSize)) !== null) { chunks.push(chunk); } }); stream.on('end', () => { resolve(Buffer.concat(chunks)); }); stream.end(); }); }; if (this.bufferPromise === null) { this.bufferPromise = getBufferInternal(); } return this.bufferPromise; } /** * @returns {Promise<string>} */ async getBase64() { const buffer = await this.getBuffer(); return buffer.toString('base64'); } /** * @returns {Promise<string>} */ async getDataUrl() { const data = await this.getBase64(); return 'data:application/pdf;base64,' + data; } } var _default = exports.default = OutputDocument;