0
点赞
收藏
分享

微信扫一扫

【每周一库】printpdf - Rust下的pdf文件生成库

本期的每周一库带来的是一个rust下的pdf生成库,printpdf

  • printpdf github仓库
  • printpdf文档

根据printpdf文档的描述可以得知,printpdf是一个用来生成用于打印的pdf文件的rust库

使用方法非常简单只需要在 ​Cargo.toml​​文件的 ​[dependencies]​标签下添加引用即可,这里使用的是printpdf 0.3.2版本

  1. [dependencies]
  2. 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​文件中写入如下代码

  1. use printpdf::*;
  2. use std::fs::File;
  3. use std::io::BufWriter;

  4. fn main() {
  5. let (doc, page1, layer1) = PdfDocument::new("PDF_Document_title", Mm(247.0), Mm(210.0), "Layer 1");
  6. let (page2, layer1) = doc.add_page(Mm(10.0), Mm(250.0),"Page 2, Layer 1");

  7. doc.save(&mut BufWriter::new(File::create("demo.pdf").unwrap())).unwrap();
  8. }

使用命令 ​cargo build​​编译工程,会在目录 ​target\debug​​中编译生成可执行的exe文件。运行生成的可执行文件会生成一个名为 ​demo.pdf

【每周一库】printpdf - Rust下的pdf文件生成库_无法连接

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

【每周一库】printpdf - Rust下的pdf文件生成库_git_02

教程中还有关于图形绘制,字体等的示例代码。这里就不一一赘述了。

最后记录一个测试printpdf的小插曲
也许是由于网络原因,在rust工程中添加dependences后总显示无法连接github.com。但是terminal中却可以正常使用 ​​git clone​命令。

如果有遇到同样情况的,可以在 ​$USER/.cargo/​​目录下创建一个配置文件,文件名 ​config​,不需要扩展名,在文件内写入

  1. [net]
  2. git-fetch-with-cli = true

保存之后就解决了cargo无法连接github.com的错误

以上就是本期每周一库的内容。


举报

相关推荐

0 条评论