string2ooxml
NodeJS
环境下将字符串转为 Office Open XML,支持插入字符串文字,markdown 字符串片段
支持的功能
- addSpecialText 将字符串转化为 ooxml,支持文字展示的基本样式设置
- addMarkDown 将 markdown 片段转化为对应的 ooxml
安装
yarn add string2ooxml
or
npm install --save string2ooxml
快速上手
addSpecialText
, addSpecialText
返回的是一个Promise
函数
const { addSpecialText, addMarkDown } = require("string2ooxml");
// 转换文字
const textOoxml = addSpecialText({ text: "demo" });
textOoxml
.then((resp) => {
console.log("resp:%o", resp);
})
.catch((err) => {
console.log("err:%o", err);
});
/**
resp:'<w:p w:rsidR="00A77427" w:rsidRDefault="007F1D13"><w:pPr><w:ind/></w:pPr><w:r><w:t>demo 是的</w:t></w:r></w:p>'
*/
// 转换markdown片段
const mdStr = `
# 你好
## 展示一个demo
`;
const mdOoxml = addMarkDown({ mdStr });
mdOoxml
.then((resp) => {
console.log("resp:%o", resp);
})
.catch((err) => {
console.log("err:%o", err);
});
/**
resp:'<w:p w:rsidR="00A77427" w:rsidRDefault="007F1D13"><w:pPr><w:ind/></w:pPr><w:r><w:rPr><w:b/><w:bCs/><w:rFonts w:ascii="Arial" w:eastAsia="Arial" w:hAnsi="Arial" w:cs="Arial" /><w:sz w:val="36"/><w:szCs w:val="36"/></w:rPr><w:t>你好</w:t></w:r></w:p><w:p w:rsidR="00A77427" w:rsidRDefault="007F1D13"><w:pPr><w:ind/></w:pPr><w:r><w:rPr><w:b/><w:bCs/><w:rFonts w:ascii="Arial" w:eastAsia="Arial" w:hAnsi="Arial" w:cs="Arial" /><w:sz w:val="32"/><w:szCs w:val="32"/></w:rPr><w:t>展示一个demo</w:t></w:r></w:p>'
*/
string2ooxml API
注意:返回的是一个Promise
函数,options
是一个Object
对象
const { addSpecialText, addMarkDown } = require("string2ooxml");
addSpecialText(options);
addMarkDown(options);
参数配置
addSpecialText options 参数
参数 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
text | 字符串 | string | any | '' |
style | 字符串的样式 | Object | style option | {} |
style option
参数 | 说明 | 类型 | 可选值 |
---|---|---|---|
color | 字体颜色代码 | string | 例如:'ffffff'(白色)或 '000000'(黑色) |
back | 背景颜色代码 | string | 例如:'ffffff'(白色)或 '000000'(黑色) |
bold | true 使文本加粗 | Boolean |
true offalse
|
border | 边框 | string | 'single'、'dashDotStroked'、'dashed'、'dashSmallGap'、'dotDash'、'dotDotDash'、'dotted'、'double'、'thick'等 |
italic | true 使文本斜体 | Boolean |
true offalse
|
underline | true 添加下划线 | Boolean |
true offalse
|
font_face | 要使用的字体 | string | |
font_size | 以pt 为单位的字体大小 |
number | |
highlight | 突出显示 | string | 'black', 'blue', 'cyan', 'darkBlue', 'darkCyan', 'darkGray', 'darkGreen', 'darkMagenta', 'darkRed', 'darkYellow', 'green', 'lightGray', 'magenta', 'none', 'red', 'white' or 'yellow'. |
strikethrough | true 添加删除线 | Boolean |
true offalse
|
superscript |
上标 true 文本降低到基线以下并将其更改为更小的尺寸 |
Boolean |
true offalse
|
subscript |
下标 true 文本提高到基线以上并将其更改为较小的尺寸 |
Boolean |
true offalse
|
style option 其他更多参数, 详见officegen Create Microsoft Office Word Document Reference 文档
addMarkDown options 参数
注意:严重依赖换行空格
参数 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
mdStr | markdown 片段 | string | any |
markdown 目前支持的语法有
# 标题一*em*
## 标题二
### 标题三
#### 标题四
##### 标题五
###### 标题六
####### 文字
_em_
adssad**strong**fdsfdsg
**strong**
--- // 分割线 word 不兼容
// 列表类 wps 兼容有问题
- sadsa
- dfsaaf
- dsaf
1. 大萨达
2. 重复的开始搞
3. 鼓风机宽度是否
// 引用类 wps 兼容有问题
> react
// 链接类 wps 兼容有问题、
[百度](https://www.baidu.com)
案例
docxtemplater的支持插入xml
功能结合,插入特殊字体或者markdown片段
与设置数据不要使用
doc.setData(data)
啦哈,直接使用doc.render(data)
docxtemplater
与string2ooxml
结合要做一点小小的改动
修改 doc.render(data)为doc.renderAsync,其他不需要做任何变动
// 因为string2ooxml内部是异步处理,所以要将docxtemplater的render改为异步
doc.renderAsync({
...data,
customText: addSpecialText({ text: "demo" }),
customMd: addMarkDown({ mdstr: "# demo" }),
});
模板 docx 中使用
{@customText}
{@customMd}
开发和调试
- npm install
- npm link
- 然后到你测试的项目中执行 npm link string2ooxml
- 引入并使用