20 个版本 (10 个稳定版)
1.0.9 | 2024年6月19日 |
---|---|
1.0.8 | 2024年5月5日 |
1.0.7 | 2024年4月24日 |
1.0.4 | 2024年3月29日 |
0.0.23 |
|
#66 in 图形 API
每月下载量 2,985
3.5MB
142K SLoC
libharu_ng
⭐ 支持此 crate,成为酷炫的,在 GitHub 上 star 此存储库! :)
它是做什么的?
使用 libharu_ng
,您可以从 Rust 代码轻松创建 PDF 文档。
libharu_ng
是 libharu (GitHub 仓库) 的现代 API 包装器。 libharu
是一个用于创建 PDF 文件的 C 库。这个 crate 提供了一个现代且安全的 Rust API,用于生成 PDF 而不必担心底层的 C 代码。
因此,在出现成熟的纯 Rust 替代方案之前,libharu_ng
是从 Rust 代码生成 PDF 的好选择,而无需使用无头浏览器或商业解决方案。
libharu
版本
此 crate 使用最新版本的 libharu
(2.4.4),并将尽快更新到最新版本的 libharu
。
功能
标准 libharu 功能
- 创建 PDF 文档。
- 向文档添加页面。
- 向页面添加文本。
- 支持文本自动换行到给定矩形内。
- 使用内置字体或加载自定义字体 (TTF)。
- 向页面添加图像。
- 支持 JPEG 和 PNG 图像(包括透明度)。
- 使用自定义页面大小。
- 保存和恢复图形状态。
- 为文档设置密码保护。
- 向页面添加形状,如线条、矩形、圆形等。
- 向页面添加注释。
- 向文档添加轮廓。
- 向文档添加元数据。
- 从源代码编译 libharu 库,将其嵌入到您的 Rust 项目中。
附加功能(由 libharu_ng
提供)
- 简单的 CTM 变换函数。
- 旋转、平移、缩放等。
有关功能详情,请参阅 libharu 文档。
需求
- libz(运行时所需)
- libpng(运行时所需)
- cmake(构建C库所需)
在 Ubuntu/Debian 上
$ apt-get install build-essential cmake libpng-dev libz3-dev
在 macOS(Homebrew)上
$ brew install cmake libpng zlib
使用方法
要在您的 Rust 项目中使用 libharu
,请在您的 Rust 项目目录下运行命令行
$ cargo add libharu_ng
示例
// Example is work in progress.
use libharu_ng::prelude::*;
fn main() -> Result<(), HaruError> {
let doc = PdfDocument::new();
let fnt = doc.get_font("Helvetica", None)?;
doc.add_page()?
.begin_text()?
.move_text_pos(220.0, 20.0)?
.set_font_and_size(fnt, 24.0)?
.show_text("Hello World")?
.end_text()?;
doc.save_to_file("./test.pdf")?;
Ok(())
}
动机
libharu_ng
的主要动机是为从 Rust 代码生成 PDF 提供一个简单且现代的 API。
其中一项需求是精细控制 PDF 文档内容,并尽可能减少依赖和大小/性能开销。
从 Rust 代码生成 PDF 有多种替代方案,每种方案都有其自身优缺点。
本包将尝试从源代码编译 libharu
库,并将其嵌入到您的 Rust 项目中。这意味着您不需要在系统上安装任何额外的依赖项,并且您无需担心系统上的 libharu
版本。如果您遇到嵌入的 libharu
版本问题,请提交一个 issue。
贡献
欢迎贡献。在提交 pull request 之前,请先提交一个 issue。
许可协议
- 本项目采用 MIT 许可协议。
- Haru 采用 ZLIB/LIBPNG 许可协议分发。