5个版本

0.2.0 2021年6月17日
0.2.0-alpha.12021年6月15日
0.2.0-alpha.02021年6月5日
0.1.1 2020年10月16日
0.1.0 2020年10月15日

#689 in 文本处理

Download history 1095/week @ 2024-03-13 1150/week @ 2024-03-20 785/week @ 2024-03-27 954/week @ 2024-04-03 928/week @ 2024-04-10 1030/week @ 2024-04-17 1145/week @ 2024-04-24 1366/week @ 2024-05-01 1566/week @ 2024-05-08 1269/week @ 2024-05-15 1380/week @ 2024-05-22 1600/week @ 2024-05-29 1261/week @ 2024-06-05 1337/week @ 2024-06-12 1254/week @ 2024-06-19 1199/week @ 2024-06-26

5,298 每月下载量
用于 10 crate

Apache-2.0 OR MIT

170KB
3K SLoC

genpdf-rs

用纯Rust编写的用户友好的PDF生成器。

文档

genpdf 是一个基于 printpdfrusttype 的PDF生成器。它负责页面布局和文本对齐,并将文档树渲染成PDF文档。所有依赖项都用Rust编写,因此不需要安装任何预装库或工具。

// Load a font from the file system
let font_family = genpdf::fonts::from_files("./fonts", "LiberationSans", None)
    .expect("Failed to load font family");
// Create a document and set the default font family
let mut doc = genpdf::Document::new(font_family);
// Change the default settings
doc.set_title("Demo document");
// Customize the pages
let mut decorator = genpdf::SimplePageDecorator::new();
decorator.set_margins(10);
doc.set_page_decorator(decorator);
// Add one or more elements
doc.push(genpdf::elements::Paragraph::new("This is a demo document."));
// Render the document and write it to a file
doc.render_to_file("output.pdf").expect("Failed to write PDF file");

有关所有支持的元素的完整示例,请参阅生成此PDF文档的 examples/demo.rs 文件。

有关更多信息,请参阅 API文档

特性

  • 纯Rust的PDF生成
  • 支持设置字体族、样式和大小以及文本颜色和文本效果(加粗或斜体)的文本渲染,以及支持连字符
  • 在单词边界处进行文本换行和可选的连字符分割
  • 按顺序或以表格形式布局元素
  • 对形状的基本支持
  • 页面页眉和自定义页面装饰
  • 嵌入图像(缩放、位置、旋转)。

Cargo特性

此crate具有以下Cargo特性(默认禁用)

  • images:使用 image crate 添加嵌入图像的支持。
  • hyphenation:使用 hyphenation crate 添加连字符分割的支持。

路线图

以下特性目前不受支持,但计划在未来版本中支持

  • 改进对形状的绘制支持
  • 高级文本格式化

另请参阅 genpdf-rs 问题跟踪器

替代方案

  • printpdfgenpdf 使用的底层 PDF 库。它提供了对生成文档的更多控制,但您必须注意所有细节,例如计算渲染文本的宽度和高度、排列元素并将它们分布在多页上。
  • latex 从 Rust 生成 LaTeX 文档。生成 PDF 文件需要安装 LaTeX。此外,转义用户输入是一个复杂的问题,该库不支持。
  • tectonic 是一个基于 XeTeX 的 TeX 引擎。它部分用 C 编写,有一些非 Rust 依赖项。
  • wkhtmltopdf 使用 wkhtmltox 库将 HTML 生成 PDF 文档。它需要一个预先安装的库,且不支持自定义元素。

最低支持的 Rust 版本

此库支持 Rust 1.45.0 或更高版本。

贡献

欢迎对这个项目做出贡献!请将补丁提交到邮件列表 ~ireas/[email protected] (存档),主题前缀为 [PATCH genpdf-rs]。更多信息,请参阅贡献指南

如果您在寻找一个良好的起点,请查看 genpdf-rs 的问题跟踪器中的标签为 “good first issue” 的问题。

联系

有关错误报告、功能请求和其他消息,请通过邮件发送到 ~ireas/[email protected] (存档),并在主题中使用前缀 [genpdf-rs]

许可证

本项目采用 Apache-2.0 和 MIT 许可证双许可。本存储库中包含的文档和示例受 Creative Commons Zero 许可证许可。您可以在 LICENSES 目录中找到许可证文本。

genpdf-rs 符合 REUSE 规范 3.0 版本

依赖项

~21MB
~137K SLoC