语言 SDK
在任意语言中使用
Majorsilence Reporting
Python、PHP 和 Ruby 封装库让您无需编写任何 .NET 代码,即可将 RDL 报表渲染为 PDF、Excel、CSV、HTML 等格式。每种语言都提供三种集成模式,以匹配您的部署约束。
Python
majorsilence-reporting
Python 3.10+。支持 subprocess、AOT 二进制文件,或 ctypes 进程内 FFI。原生模式下支持真正的内存缓冲区渲染。
阅读文档 → PHPmajorsilence/reporting
PHP 8.1+。Composer 包。支持 proc_open 子进程和 PHP FFI 原生模式。可与 Laravel、Symfony 或原生 PHP 配合使用。
阅读文档 → Rubymajorsilence_reporting
Ruby 3.0+。零运行时 gem 依赖。使用 Fiddle FFI 实现进程内原生渲染。可与 Rails、Sinatra 或原生 Ruby 配合使用。
阅读文档 → Rustmajorsilence-reporting
Rust 2021 edition。仅支持 libloading FFI——无 subprocess 模式。线程安全的 Arc 句柄。真正的内存缓冲区。支持全部 10 种格式。只有一个依赖项。
阅读文档 →集成模式
每种语言绑定都提供三个类,覆盖不同的部署场景:
| 模式 | 工作原理 | 何时使用 |
|---|---|---|
| Report | 通过系统 shell 将 dotnet RdlCmd.dll 作为子进程启动。要求服务器上已安装 .NET 运行时。 |
设置最简单——适合开发环境,或 .NET 已经存在于目标机器时使用。 |
| ReportAot | 启动一个自包含的 AOT 编译二进制文件(RdlCmd)。完全不需要 .NET 运行时——该二进制文件包含一切所需内容。 |
适用于无法安装 .NET 运行时的生产部署环境。将该二进制文件与您的应用一起复制部署即可。 |
| ReportNative | 通过原生 FFI(ctypes / PHP FFI / Fiddle)在进程内加载 librdlnative.so。不会启动子进程。 |
延迟最低、吞吐量最高。若需要在不写临时文件的情况下进行内存渲染,此模式为必需(目前仅 Python 支持)。 |
功能对比
| 功能 | Python | PHP | Ruby | Rust |
|---|---|---|---|---|
| 最低语言版本 | 3.10+ | 8.1+ | 3.0+ | 1.65+ |
| 包管理器 | pip | Composer | 暂无 gem | 暂无 crate |
| 运行时依赖项 | 无 | 无 | 无 | libloading |
| subprocess(dotnet)模式 | ✓ | ✓ | ✓ | – |
| AOT 二进制模式 | ✓ | ✓ | ✓ | – |
| 原生 FFI 模式 | ✓ | ✓ | ✓ | ✓ 唯一模式 |
add_data() 内存数据集 | 仅原生模式 | 仅原生模式 | 仅原生模式 | ✓ |
| 真正的内存缓冲区(无临时文件) | ✓ 原生模式 | – | – | ✓ |
| 线程安全的库句柄 | – | – | – | Arc 支持 |
| xlsx_table、tifb、mht 格式 | AOT + 原生模式 | AOT + 原生模式 | AOT + 原生模式 | 所有模式 |
支持的导出格式
三种语言绑定都支持传递给 export() / export_to_memory() 的相同核心格式字符串:
| 格式字符串 | 输出 | 可用于 |
|---|---|---|
pdf | 所有模式 | |
csv | CSV 文本 | 所有模式 |
xlsx | Excel 工作簿 | 所有模式 |
xml | XML 数据 | 所有模式 |
rtf | 富文本格式 | 所有模式 |
tif | TIFF 图像(彩色) | 所有模式 |
html | HTML | 所有模式 |
xlsx_table | Excel(表格样式) | 仅 AOT + 原生模式(Python/PHP/Ruby);所有模式(Rust) |
tifb | TIFF 图像(黑白) | 仅 AOT + 原生模式(Python/PHP/Ruby);所有模式(Rust) |
mht | MHTML 网页存档 | 仅 AOT + 原生模式(Python/PHP/Ruby);所有模式(Rust) |