UNPKG

pdfmake

Version:

Client/server side PDF printing in pure JavaScript

52 lines (40 loc) 1.18 kB
'use strict'; var fs = require('fs'); function ImageMeasure(pdfKitDoc, imageDictionary) { this.pdfKitDoc = pdfKitDoc; this.imageDictionary = imageDictionary || {}; } ImageMeasure.prototype.measureImage = function (src) { var image; var that = this; if (!this.pdfKitDoc._imageRegistry[src]) { try { image = this.pdfKitDoc.openImage(realImageSrc(src)); if (!image) { throw 'No image'; } } catch (error) { throw 'Invalid image: ' + error.toString() + '\nImages dictionary should contain dataURL entries (or local file paths in node.js)'; } image.embed(this.pdfKitDoc); this.pdfKitDoc._imageRegistry[src] = image; } else { image = this.pdfKitDoc._imageRegistry[src]; } return { width: image.width, height: image.height }; function realImageSrc(src) { var img = that.imageDictionary[src]; if (!img) { return src; } if (fs.existsSync(img)) { return fs.readFileSync(img); } var index = img.indexOf('base64,'); if (index < 0) { return that.imageDictionary[src]; } return Buffer.from(img.substring(index + 7), 'base64'); } }; module.exports = ImageMeasure;