#docx #office #word

docx-rs

使用 Rust/WebAssembly 的 .docx 文件写入器

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解析器实现

Download history 414/week @ 2024-05-02 589/week @ 2024-05-09 465/week @ 2024-05-16 568/week @ 2024-05-23 541/week @ 2024-05-30 468/week @ 2024-06-06 618/week @ 2024-06-13 747/week @ 2024-06-20 771/week @ 2024-06-27 1092/week @ 2024-07-04 1003/week @ 2024-07-11 838/week @ 2024-07-18 1061/week @ 2024-07-25 610/week @ 2024-08-01 641/week @ 2024-08-08 444/week @ 2024-08-15

2,853 每月下载量
用于 13 软件包(10 个直接使用)

MIT 许可证

1MB
25K SLoC

使用 Rust/WebAssembly 的 .docx 文件 `writer`。


GitHub Actions Status docx-rs at crates.io

安装

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);

更多示例

开发

需求

示例

您可以使用以下代码运行示例。请参阅 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