page-margins-xform.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. const _ = require('../../../utils/under-dash');
  2. const BaseXform = require('../base-xform');
  3. class PageMarginsXform extends BaseXform {
  4. get tag() {
  5. return 'pageMargins';
  6. }
  7. render(xmlStream, model) {
  8. if (model) {
  9. const attributes = {
  10. left: model.left,
  11. right: model.right,
  12. top: model.top,
  13. bottom: model.bottom,
  14. header: model.header,
  15. footer: model.footer,
  16. };
  17. if (_.some(attributes, value => value !== undefined)) {
  18. xmlStream.leafNode(this.tag, attributes);
  19. }
  20. }
  21. }
  22. parseOpen(node) {
  23. switch (node.name) {
  24. case this.tag:
  25. this.model = {
  26. left: parseFloat(node.attributes.left || 0.7),
  27. right: parseFloat(node.attributes.right || 0.7),
  28. top: parseFloat(node.attributes.top || 0.75),
  29. bottom: parseFloat(node.attributes.bottom || 0.75),
  30. header: parseFloat(node.attributes.header || 0.3),
  31. footer: parseFloat(node.attributes.footer || 0.3),
  32. };
  33. return true;
  34. default:
  35. return false;
  36. }
  37. }
  38. parseText() {}
  39. parseClose() {
  40. return false;
  41. }
  42. }
  43. module.exports = PageMarginsXform;