34 个版本
0.4.17 | 2024年4月26日 |
---|---|
0.4.13 | 2024年3月29日 |
0.4.7 | 2023年6月23日 |
0.4.6 | 2022年11月4日 |
0.2.2 | 2020年3月10日 |
#137 在 解析器实现 中
2,853 每月下载量
用于 13 个 软件包(10 个直接使用)
1MB
25K SLoC
使用 Rust/WebAssembly 的 .docx 文件 `writer`。
安装
Rust
[dependencies]
docx-rs = "0.4"
浏览器/Node.js
$ yarn add docx-wasm
示例
Rust
use docx_rs::*;
pub fn hello() -> Result<(), DocxError> {
let path = std::path::Path::new("./hello.docx");
let file = std::fs::File::create(path).unwrap();
Docx::new()
.add_paragraph(Paragraph::new().add_run(Run::new().add_text("Hello")))
.build()
.pack(file)?;
Ok(())
}
浏览器
import { saveAs } from "file-saver";
// // Note that a dynamic `import` statement here is required due to webpack/webpack#6615,
import("docx-wasm").then((w) => {
const { buffer } = new w.Docx()
.addParagraph(
new w.Paragraph().addRun(new w.Run().addText("Hello world!!"))
)
.build();
saveAs(new Blob([buffer]), "hello.docx");
});
Node.js
const w = require("docx-wasm");
const { writeFileSync } = require("fs");
const { buffer } = new w.Docx()
.addParagraph(new w.Paragraph().addRun(new w.Run().addText("Hello world!!")))
.build();
writeFileSync("hello.docx", buffer);
更多示例
开发
需求
- Node.js 16+
- yarn 1+
- wasm-pack0.10.1 (https://wasm.rust-lang.net.cn/wasm-pack/)
- insta (https://github.com/mitsuhiko/insta)
示例
您可以使用以下代码运行示例。请参阅 examples
目录。
$ cargo run --example [EXAMPLE_NAME]
例如,如果您想运行 hello
示例,请运行以下命令。
$ cargo run --example hello
您可以在输出目录中看到输出文件。
测试
Rust
请运行以下命令。
make lint && make test
如果快照测试失败,请修复代码或更新快照文件。(见 https://insta.rs/)。
$ cargo-insta review
然后重新运行测试。
$ make test
Wasm
请运行以下命令。
$ cd docx-wasm && yarn install && yarn test
如果快照测试失败,请修复代码或更新快照文件。(见 https://jest.node.org.cn/docs/snapshot-testing)。
$ yarn test -- --updateSnapshot
特性
- 段落
- 对齐
- 缩进
- 编号
- 运行
- 粗体
- 大小
- 字体
- 颜色
- 高亮
- 下划线
- 消失
- 斜体
- 文本边框
- 换行
- 页眉
- 页脚
- 注释
- 图片
- 样式
- 表格
- 历史
- 目录
- 部分
- 文本框
依赖
~7.5MB
~115K SLoC