ITPub博客

首页 > 数据库 > 数据库开发技术 > 【每周一库】printpdf - Rust下的pdf文件生成库

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

原创 数据库开发技术 作者:Rust语言中文社区 时间:2020-04-03 13:32:01 0 删除 编辑

本期的每周一库带来的是一个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

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

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

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

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

  1. [net]

  2. git-fetch-with-cli = true

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

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


原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-06-11

  • 博文量
    1769
  • 访问量
    718718