3 个版本 (1 个稳定版)
1.0.0 | 2024年7月26日 |
---|---|
0.3.4 | 2024年5月7日 |
0.3.0 |
|
0.2.1 |
|
0.0.1 |
|
#410 in 文本处理
每月195次下载
675KB
346 代码行
Metatron
Metatron 库:基于 Shiva 库 的报告生成实现
支持的报告类型
- 纯文本
- Markdown
- HTML
用法
Cargo.toml
[dependencies]
metatron = "1.0.0"
fn main() {
let template = std::fs::read_to_string("report-template.kdl").unwrap();
let data = std::fs::read_to_string("report-data.json").unwrap();
let images = HashMap::new();
let doc = Report::generate(&template, &data, &images).unwrap();
let result = shiva::pdf::Transformer::generate(&doc).unwrap();
std::fs::write("report.pdf",result.0).unwrap();
}
工作原理
report-template.kdl
template {
title {
image src="data/logo.png" width=100 height=100
header level=1 "$P{company_name} Employee Report"
}
page_header {
text size=7 "Confidential information"
}
column_header {
column name="Name" width=30
column name="Age" width=10
column name="Salary" width=20
}
row {
value "$F(name)"
value "$F(age)"
value "$F(salary)"
}
column_footer {
value "Average:"
value "$P{average_age}"
value "$P{average_salary}"
}
page_footer {
text size=7 "Tel: +1 123 456 789"
}
summary {
paragraph {
text size=10 "Company address: $P{company_address}"
}
}
}
report-data.json
{
"rows": [
{
"name": "John",
"age": 25,
"salary": 50000
},
{
"name": "Jane",
"age": 30,
"salary": 60000
},
{
"name": "Jim",
"age": 35,
"salary": 70000
}
],
"params": {
"company_name": "ABCDFG Ltd",
"company_address": "1234 Elm St, Springfield, IL 62701",
"average_age": 30,
"average_salary": 60000
}
}
生成的报告
贡献
我希望看到社区的贡献。如果您遇到错误,请随时提交问题。如果您想实现新功能或修复错误,请按照以下步骤进行
- 阅读 "贡献者许可协议 (CLA)"
- 通过telegram @ievkz 或 discord @igumnovnsk 联系我
- 在存储库中确认电子邮件邀请
- 执行 "git clone"
- 创建分配给您的问题的分支
- 向主分支创建拉取请求
依赖项
~13–24MB
~371K SLoC