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 2024年1月23日

#66 in 图形 API

Download history 44/week @ 2024-04-27 160/week @ 2024-05-04 4/week @ 2024-05-11 9/week @ 2024-05-18 1/week @ 2024-05-25 9/week @ 2024-06-01 10/week @ 2024-06-08 144/week @ 2024-06-15 26/week @ 2024-06-22 2/week @ 2024-06-29 3/week @ 2024-07-13

每月下载量 2,985

MIT 许可证

3.5MB
142K SLoC

C 125K SLoC // 0.0% comments Rust 17K SLoC // 0.0% comments

libharu_ng

GitHub Actions Workflow Status Crates.io Downloads GitHub Stars

⭐ 支持此 crate,成为酷炫的,在 GitHub 上 star 此存储库! :)

它是做什么的?

使用 libharu_ng,您可以从 Rust 代码轻松创建 PDF 文档。

libharu_nglibharu (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 许可协议分发。

无运行时依赖