После небольшого исследования я нашел рабочее решение моей проблемы (проблем):
Существует модуль, называемый соком, который позволяет применять указанные css inline.
Потребности в сокекопия css, которую мне пришлось загружать отдельно.
Кроме того, поскольку html-docx-js может читать только первое определение стиля css внутри элемента, мне пришлось немного отрегулировать css и html, чтобы приспособиться к этому.
Итоговый код выглядит так:
import htmlDocx from 'html-docx-js/dist/html-docx';
import saveAs from 'file-saver';
const juice = require('juice');
let getIndex = new Promise((resolve, reject) => {
this.requests('GET', '/styles/index.css')
.then(data =>
data.text().then(css => {
resolve(css);
})
)
.catch(error => reject(error));
});
getIndex
.then(css => {
let html =
'<!DOCTYPE html><html><head lang="en"><style></style>' +
'<meta charset="UTF-8"><title>Report</title></head><body>' +
this.report.innerHTML +
'</body></html>';
html = juice.inlineContent(html, css);
let docx = htmlDocx.asBlob(html);
saveAs(docx, 'report.docx');
})
.catch(error => {
console.log(error);
});