效果演示:
代码:
安装方式请参考:https://club.roamedit.com/club/?thread-1976.htm
/**
* @title 导出为doc
* @author Innis
* @note 将当前页面导出为doc格式。
*/
// import "./print"
pluginManager.register('docExport', {
after_docmenu_run() {
plugin.menu.group.doc.sub.exportAs.sub.doc = {
label: "DOC",
icon: "caret-right",
action() {
const ky = this.nv.ky;
const bullets = plugin.memory.get(ky, true);
let htmlPrintContent = plugin.docExport.html(bullets)
let pageTopic = bullets.text
htmlPrintContent = `<div id="printContent">${htmlPrintContent}</div>`;
htmlPrintContent = htmlPrintContent.replace("</li></ul></div>", "</div>").replace(`<ul><li>${pageTopic}`, "");
let regex1 = /<span ps='.'>(\S|\s)+?<\/span>/g;
let subst1 = ``;
let regex2 = /<span(\S|\s)+?>/g;
let subst2 = ``;
let regex3 = /<s ps='.'>(\S|\s)+?<\/s>/g;
let subst3 = ``;
htmlPrintContent = htmlPrintContent.replace(regex1, subst1)
.replace(regex2, subst2)
.replace(regex3, subst3);
htmlPrintContent = htmlPrintContent.replace("color='red'", "style='color: #d9534f'")
.replace("color='green'", "style='color:#5cb85c'")
.replace("color='blue'", "style='color:#337ab7'")
.replace("color='yellow'", "style='color:#f2b968'")
.replace("<highlight", "<span style='background:#fbe9cf;")
.replace("</highlight>", "</span>")
htmlPrintContent = htmlPrintContent.replaceAll('data/user-data', 'https://roamedit.com/edit/data/user-data')
function getModelHtml(mhtml) {
return `
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
</head>
</head>
<body>
<h1>${pageTopic}</h1>
${mhtml}
</body>
</html>
`
}
var html = getModelHtml(htmlPrintContent)
var blob = new Blob([html], { type: "application/msword;charset=UTF-8" });
saveAs(blob, `${pageTopic}.doc`);
}
}
},
html(node) {
let wrapTag = 'ul'
function item2li(itemJson) {
if (isEmpty(itemJson)) {
return '';
}
let html = '';
if (!isEmpty(itemJson.child)) {
html += list2ul(itemJson.child);
}
return `<li>${itemJson.text || itemJson.ori}${html}</li>`;
}
function list2ul(listJson) {
let html = '';
for (const item of listJson) {
html += item2li(item);
}
return `<ul>${html}</ul>`;
}
let html = item2li(node);
if (!isEmpty(wrapTag)) {
html = `<${wrapTag}>${html}</${wrapTag}>`;
}
return html;
},
run() {
loadScript("https://cdn.bootcdn.net/ajax/libs/FileSaver.js/2.0.4/FileSaver.js")
}
});