最近在学习GitHub Action时想做一个CD(持续部署)就想到那就做一个工具吧,docx转HTML是一个不错的工具,经过搜索发现了mammoth这个库。
随后在README中发现有demo,跑了一下demo,没问题,可以在浏览器端进行docx到HTML的解析。
后续在demo的基础上加上了打印指定区域,然后转为pdf。
我的做法是在页面中插入一个iframe,将转换后的HTML保存在iframe中,然后在iframe中调用浏览器提供的打印方法。
const btn = document.querySelector("#print")
btn.addEventListener("click", function () {
print()
})
const iframe = document.createElement("iframe")
iframe.style.display = "none"
document.body.appendChild(iframe)
function print() {
const cp = document.querySelector(".span8").innerHTML
iframe.contentWindow.window.document.body.innerHTML = cp
try {
iframe.contentWindow.window.print()
} catch (error) {
alert("打印发生了错误,请重试!")
}
}
但是在测试过程中,发现在firefox中有问题,无法实现功能。
后续修复这个问题的方法是页面初始化时,先在iframe中添加个textNode或者其他,总之不能让iframe是空的。
setTimeout(() => { // fix firefox bug
iframe.contentWindow.window.document.body.innerHTML = "mammoth.browser"
})
部署的仓库地址mammoth-deploy
在线地址mammoth-deploy
fix: 今天我测试时,firefox在更新后,把这个问题修复了。