本期的每周一库带来的是一个rust下的pdf生成库,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.0rustc --version
1.39.0
创建一个简单pdf页面
这里我们使用了cargo new your_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的错误
以上就是本期每周一库的内容。
评论区
写评论这个功能没啥用啊
可以生成复杂的页面不,表现力相比html 怎么样