UNPKG

excel-builder

Version:

An easy way of building Excel files with javascript

107 lines (94 loc) 3.73 kB
"use strict"; var _ = require('lodash'); var util = require('../util'); var Drawing = require('./index'); var Picture = function () { this.media = null; this.id = _.uniqueId('Picture'); this.pictureId = util.uniqueId('Picture'); this.fill = {}; this.mediaData = null; }; Picture.prototype = new Drawing(); _.extend(Picture.prototype, { setMedia: function (mediaRef) { this.mediaData = mediaRef; }, setDescription: function (description) { this.description = description; }, setFillType: function (type) { this.fill.type = type; }, setFillConfig: function (config) { _.extend(this.fill, config); }, getMediaType: function () { return 'image'; }, getMediaData: function () { return this.mediaData; }, setRelationshipId: function (rId) { this.mediaData.rId = rId; }, toXML: function (xmlDoc) { var pictureNode = util.createElement(xmlDoc, 'xdr:pic'); var nonVisibleProperties = util.createElement(xmlDoc, 'xdr:nvPicPr'); var nameProperties = util.createElement(xmlDoc, 'xdr:cNvPr', [ ['id', this.pictureId], ['name', this.mediaData.fileName], ['descr', this.description || ""] ]); nonVisibleProperties.appendChild(nameProperties); var nvPicProperties = util.createElement(xmlDoc, 'xdr:cNvPicPr'); nvPicProperties.appendChild(util.createElement(xmlDoc, 'a:picLocks', [ ['noChangeAspect', '1'], ['noChangeArrowheads', '1'] ])); nonVisibleProperties.appendChild(nvPicProperties); pictureNode.appendChild(nonVisibleProperties); var pictureFill = util.createElement(xmlDoc, 'xdr:blipFill'); pictureFill.appendChild(util.createElement(xmlDoc, 'a:blip', [ ['xmlns:r', util.schemas.relationships], ['r:embed', this.mediaData.rId] ])); pictureFill.appendChild(util.createElement(xmlDoc, 'a:srcRect')); var stretch = util.createElement(xmlDoc, 'a:stretch'); stretch.appendChild(util.createElement(xmlDoc, 'a:fillRect')); pictureFill.appendChild(stretch); pictureNode.appendChild(pictureFill); var shapeProperties = util.createElement(xmlDoc, 'xdr:spPr', [ ['bwMode', 'auto'] ]); var transform2d = util.createElement(xmlDoc, 'a:xfrm'); shapeProperties.appendChild(transform2d); var presetGeometry = util.createElement(xmlDoc, 'a:prstGeom', [ ['prst', 'rect'] ]); shapeProperties.appendChild(presetGeometry); pictureNode.appendChild(shapeProperties); // <xdr:spPr bwMode="auto"> // <a:xfrm> // <a:off x="1" y="1"/> // <a:ext cx="1640253" cy="1885949"/> // </a:xfrm> // <a:prstGeom prst="rect"> // <a:avLst/> // </a:prstGeom> // <a:noFill/> // <a:extLst> // <a:ext uri="{909E8E84-426E-40DD-AFC4-6F175D3DCCD1}"> // <a14:hiddenFill xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main"> // <a:solidFill> // <a:srgbClr val="FFFFFF"/> // </a:solidFill> // </a14:hiddenFill> // </a:ext> // </a:extLst> // </xdr:spPr> // return this.anchor.toXML(xmlDoc, pictureNode); } }); module.exports = Picture;