本期的每周一库带来的是一个rust下的pdf生成库,printpdf
printpdf github仓库
printpdf文档
根据printpdf文档的描述可以得知,printpdf是一个用来生成用于打印的pdf文件的rust库
使用方法非常简单只需要在 Cargo.toml文件的 [dependencies]标签下添加引用即可,这里使用的是printpdf 0.3.2版本
[dependencies]
printpdf = "0.3.2"
printpdf特性
现阶段的printpdf只支持生成pdf文件,还不支持读取pdf文件
页面生成
页面分层
图像绘制(线条,形状,贝塞尔曲线)
图像(现阶段支持BMP容器格式的图像)
嵌入字体(可以使用TTF或者OTF格式的字体)
高级图像绘制模式
高级字符渲染(例如字符尺度缩放,字体间距,边距等)
PDF分层(用于在Adobe Illustrator中打开编辑分层)
下面我们通过文档中给出的例子来体验一下printpdf库的功能
测试环境
Windows 10
cargo--version 1.39.0
rustc--version 1.39.0
创建一个简单pdf页面
这里我们使用了 cargonewyour_project_name来创建工程,在 src\main.rs文件中写入如下代码
use printpdf::*;
use std::fs::File;
use std::io::BufWriter;
fn main() {
let (doc, page1, layer1) = PdfDocument::new("PDF_Document_title", Mm(247.0), Mm(210.0), "Layer 1");
let (page2, layer1) = doc.add_page(Mm(10.0), Mm(250.0),"Page 2, Layer 1");
doc.save(&mut BufWriter::new(File::create("demo.pdf").unwrap())).unwrap();
}
使用命令 cargo build编译工程,会在目录 target\debug中编译生成可执行的exe文件。运行生成的可执行文件会生成一个名为 demo.pdf

打开生成的pdf文件,里面包含了两个页面,第一页宽度247,高度210;第二页宽度10,高度250,分别有不同的页面宽度和高度,内容如下:

教程中还有关于图形绘制,字体等的示例代码。这里就不一一赘述了。
最后记录一个测试printpdf的小插曲
也许是由于网络原因,在rust工程中添加dependences后总显示无法连接github.com。但是terminal中却可以正常使用 git clone命令。
如果有遇到同样情况的,可以在 $USER/.cargo/目录下创建一个配置文件,文件名 config,不需要扩展名,在文件内写入
[net]
git-fetch-with-cli = true
保存之后就解决了cargo无法连接github.com的错误
以上就是本期每周一库的内容。
原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。