paper-size
Version:
Paper Size utilities
105 lines (100 loc) • 2.59 kB
JavaScript
var SIZES_IN_MM = {
'A0': [841, 1189],
'A1': [594, 841],
'A2': [420, 594],
'A3': [297, 420],
'A4': [210, 297],
'A5': [148, 210],
'A6': [105, 148],
'A7': [74, 105],
'A8': [52, 74],
'A9': [37, 52],
'A10': [26, 37],
'B0': [1000, 1414],
'B1': [707, 1000],
'B2': [500, 707],
'B3': [353, 500],
'B4': [250, 353],
'B5': [176, 250],
'B6': [125, 176],
'B7': [88, 125],
'B8': [62, 88],
'B9': [44, 62],
'B10': [31, 44],
'C0': [917, 1297],
'C1': [648, 917],
'C2': [458, 648],
'C3': [324, 458],
'C4': [229, 324],
'C5': [162, 229],
'C6': [114, 162],
'C7': [81, 114],
'C8': [57, 81],
'C9': [40, 57],
'C10': [28, 40],
'LETTER': [216, 279],
'LEGAL': [216, 356]
};
var mmToM = function(dimension) {
if (dimension) {
return [
parseFloat((dimension[0] / 100).toFixed(3)),
parseFloat((dimension[1] / 100).toFixed(3))
];
}
};
var mmToCM = function(dimension) {
if (dimension) {
return [
parseFloat((dimension[0] / 10).toFixed(3)),
parseFloat((dimension[1] / 10).toFixed(3))
];
}
};
var mmToInches = function(dimension) {
if (dimension) {
return [
parseFloat((dimension[0] / 25.4).toFixed(3)),
parseFloat((dimension[1] / 25.4).toFixed(3))
];
}
};
var mmToPixel = function(dimension, dpi) {
dpi || (dpi = 72);
dimension = mmToInches(dimension);
if (dimension) {
return [
Math.round(dimension[0] * dpi),
Math.round(dimension[1] * dpi)
];
}
};
module.exports = {
register: function(name, width, height) {
if (width > height) {
height = [width, width = height][0];
}
SIZES_IN_MM[name.toUpperCase()] = [width, height];
},
getSize: function(name, options) {
options || (options = {});
var dimension = SIZES_IN_MM[name.toUpperCase()];
if (options.unit) {
switch (options.unit.toLowerCase()) {
case 'm':
dimension = mmToM(dimension);
break;
case 'cm':
dimension = mmToCM(dimension);
break;
case 'inches':
dimension = mmToInches(dimension);
break;
case 'pixel':
dimension = mmToPixel(dimension, options.dpi);
break;
}
}
return dimension;
}
};