5个版本
0.2.0 | 2021年6月17日 |
---|---|
0.2.0-alpha.1 | 2021年6月15日 |
0.2.0-alpha.0 | 2021年6月5日 |
0.1.1 | 2020年10月16日 |
0.1.0 | 2020年10月15日 |
#689 in 文本处理
5,298 每月下载量
用于 10 crate
170KB
3K SLoC
genpdf-rs
用纯Rust编写的用户友好的PDF生成器。
genpdf
是一个基于 printpdf
和 rusttype
的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
问题跟踪器。
替代方案
printpdf
是genpdf
使用的底层 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