myst-to-docx
导出 MyST 文档到 Microsoft Word 文件, 使用 docx 文档。 。 。 .
概览
myst-to-docx 有一个 DocxSerializer 对象,您在行走 MyST 文档时将其写入。 是一个光线包裹 https://docx.js.org/ (中文(简体) ),它实际上负责导出. myst-to-docx 只写( 即可以导出到, 但无法读取) *.docx),并覆盖了所有标准 MyST 节点(见下文).
myst-to-docx 可用于浏览器或节点。 此库目前仅依赖 docx, (中文(简体) ), myst-frontmatter 财务报告和审定财务报表 buffer-image-size - 序列处理器可以外部编辑(见 Extended Usage 页:1.
AST应该通过 myst-transforms 以确保列出所有节点.
浏览器中的基本用途
工具 fetchImagesAsBuffers 将 AST 移动并下载图像到 docx 使用的缓冲器中,它也会计算出对象的大小,并将对象带回 getImageBuffer 财务报告和审定财务报表 getImageDimensions,这些选项需要传递给选项。 如果您的图像更为复杂(例如它们是人鱼图,或Jupyter输出),您需要做更复杂的预处理来创建这两个函数.
A 类 Blob 返回,可以下载客户端.
import { unified } from 'unified';
import { mystToDocx, fetchImagesAsBuffers, DocxResult } from 'myst-to-docx';
const opts = await fetchImagesAsBuffers(tree);
const file = unified().use(mystToDocx, opts).stringify(tree);
const blob = await (file.result as DocxResult);
节点的基本使用
在节点中,图像维度是使用只使用节点包来发现的,不需要提供. 节点转换的结果是 Buffer 作为 file.result,可以保存到磁盘中.
import { unified } from 'unified';
import { mystToDocx, DocxResult } from 'myst-to-docx';
const file = unified()
.use(mystToDocx, {
getImageBuffer(url) {
return fs.readFileSync(url).buffer;
};
})
.stringify(tree);
const buffer = await (file.result as DocxResult);
扩展用途
而不是使用 defaultDocxSerializer 您可以覆盖或提供 cumosome 序列器.
import { DocxSerializer, defaultNodes, defaultMarks } from 'myst-to-docx';
const nodeSerializer = {
...defaultNodes,
my_paragraph(state, node) {
state.renderInline(node);
state.closeBlock(node);
},
};
export const myDocxSerializer = new DocxSerializer(nodeSerializer, defaultMarks);
这个 state 这是 DocxSerializerState 并具有与 docx。 。 。 .
支持的块节点
- 文本
- 链接
- 段 次 页 次
- 标题(职等)
- 包括标题编号
- 块引用
- 代码
- TODO: 不支持样式
- 主题中断
- 换行
- 列表
- 列表 项目
- 图像
- 数学
- 包括编号
- 内置线性Math
- 交叉参照
- 缩略语
- 块
- 定义 列表
- 定义
- 定义 说明
- 集装箱
- 标题
- 标题
- 图表
支持的样式节点
- 重点
- 强
- 内置代码
- 下标
- 上标
- 删除( 切通)
- 下划线
- 小盖