From 6dd9c3a01f5fceab78404d8ebddb848fb91c933c Mon Sep 17 00:00:00 2001 From: privateOmega Date: Sat, 9 May 2020 22:32:19 +0530 Subject: [PATCH] feat: added document file render helper --- src/helpers/index.js | 2 ++ src/helpers/render-document-file.js | 40 +++++++++++++++++++++++++++++ src/html-to-docx.js | 1 + 3 files changed, 43 insertions(+) create mode 100644 src/helpers/index.js create mode 100644 src/helpers/render-document-file.js diff --git a/src/helpers/index.js b/src/helpers/index.js new file mode 100644 index 00000000..9aff598f --- /dev/null +++ b/src/helpers/index.js @@ -0,0 +1,2 @@ +/* eslint-disable import/prefer-default-export */ +export { default as renderDocumentFile } from './render-document-file'; diff --git a/src/helpers/render-document-file.js b/src/helpers/render-document-file.js new file mode 100644 index 00000000..822bf5a1 --- /dev/null +++ b/src/helpers/render-document-file.js @@ -0,0 +1,40 @@ +import { fragment } from 'xmlbuilder2'; + +import template from '../../template/document.template'; + +const VNode = require('virtual-dom/vnode/vnode'); +const VText = require('virtual-dom/vnode/vtext'); + +const convertHTML = require('html-to-vdom')({ + VNode, + VText, +}); + +// eslint-disable-next-line no-unused-vars +function convertVTreeToXML(vNode, xmlFragment) { + if (!vNode) { + // eslint-disable-next-line no-useless-return + return; + } + // eslint-disable-next-line no-empty + if (vNode.type === 'VirtualText') { + } +} + +function renderDocumentFile(documentOptions, htmlString) { + const { orientation, margins } = documentOptions; + const width = orientation === 'landscape' ? 15840 : 12240; + const height = orientation === 'landscape' ? 12240 : 15840; + + // eslint-disable-next-line no-unused-vars + const vTree = convertHTML(htmlString); + + const xmlFragment = fragment(); + + // eslint-disable-next-line no-unused-vars + const xmlString = convertVTreeToXML(vTree, xmlFragment); + + return template(width, height, orientation, margins); +} + +export default renderDocumentFile; diff --git a/src/html-to-docx.js b/src/html-to-docx.js index 099dbf25..30f23c12 100644 --- a/src/html-to-docx.js +++ b/src/html-to-docx.js @@ -1,4 +1,5 @@ import { contentTypesXML, generateCoreXML, generateDocumentRelsXML, relsXML } from './schemas'; +import { renderDocumentFile } from './helpers'; const defaultDocumentOptions = { orientation: 'portrait',