pdfmake
Version:
Client/server side PDF printing in pure JavaScript
64 lines (59 loc) • 1.43 kB
JavaScript
;
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;