UNPKG

exceljs

Version:

Excel Workbook Manager - Read and Write xlsx and csv Files.

104 lines (96 loc) 3.21 kB
const _ = require('../../../utils/under-dash'); const BaseXform = require('../base-xform'); function booleanToXml(model) { return model ? '1' : undefined; } function pageOrderToXml(model) { switch (model) { case 'overThenDown': return model; default: return undefined; } } function cellCommentsToXml(model) { switch (model) { case 'atEnd': case 'asDisplyed': return model; default: return undefined; } } function errorsToXml(model) { switch (model) { case 'dash': case 'blank': case 'NA': return model; default: return undefined; } } function pageSizeToModel(value) { return value !== undefined ? parseInt(value, 10) : undefined; } class PageSetupXform extends BaseXform { get tag() { return 'pageSetup'; } render(xmlStream, model) { if (model) { const attributes = { paperSize: model.paperSize, orientation: model.orientation, horizontalDpi: model.horizontalDpi, verticalDpi: model.verticalDpi, pageOrder: pageOrderToXml(model.pageOrder), blackAndWhite: booleanToXml(model.blackAndWhite), draft: booleanToXml(model.draft), cellComments: cellCommentsToXml(model.cellComments), errors: errorsToXml(model.errors), scale: model.scale, fitToWidth: model.fitToWidth, fitToHeight: model.fitToHeight, firstPageNumber: model.firstPageNumber, useFirstPageNumber: booleanToXml(model.firstPageNumber), usePrinterDefaults: booleanToXml(model.usePrinterDefaults), copies: model.copies, }; if (_.some(attributes, value => value !== undefined)) { xmlStream.leafNode(this.tag, attributes); } } } parseOpen(node) { switch (node.name) { case this.tag: this.model = { paperSize: pageSizeToModel(node.attributes.paperSize), orientation: node.attributes.orientation || 'portrait', horizontalDpi: parseInt(node.attributes.horizontalDpi || '4294967295', 10), verticalDpi: parseInt(node.attributes.verticalDpi || '4294967295', 10), pageOrder: node.attributes.pageOrder || 'downThenOver', blackAndWhite: node.attributes.blackAndWhite === '1', draft: node.attributes.draft === '1', cellComments: node.attributes.cellComments || 'None', errors: node.attributes.errors || 'displayed', scale: parseInt(node.attributes.scale || '100', 10), fitToWidth: parseInt(node.attributes.fitToWidth || '1', 10), fitToHeight: parseInt(node.attributes.fitToHeight || '1', 10), firstPageNumber: parseInt(node.attributes.firstPageNumber || '1', 10), useFirstPageNumber: node.attributes.useFirstPageNumber === '1', usePrinterDefaults: node.attributes.usePrinterDefaults === '1', copies: parseInt(node.attributes.copies || '1', 10), }; return true; default: return false; } } parseText() {} parseClose() { return false; } } module.exports = PageSetupXform;