使用Rust生成PDF文件的方法与示例

最近在学习Rust,想用它来生成PDF文件,但不知道有哪些可靠的库可以用。大家能推荐几个好用的Rust PDF生成库吗?最好能附带一些简单的代码示例,比如如何创建一个包含文字和图片的基本PDF文档。另外在性能和使用体验上,这些库各有什么优缺点?

2 回复

使用Rust生成PDF文件,推荐使用printpdf库,它简单易用且功能完善。

步骤:

  1. Cargo.toml中添加依赖:
[dependencies]
printpdf = "0.4"
  1. 基础示例代码:
use printpdf::*;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 创建文档
    let (doc, page1, layer1) = PdfDocument::new("PDF_Demo", Mm(210.0), Mm(297.0), "Layer 1");
    let current_layer = doc.get_page(page1).get_layer(layer1);

    // 设置字体
    let font = doc.add_builtin_font(BuiltinFont::Helvetica)?;
    
    // 添加文本
    current_layer.use_text("Hello PDF!", 48.0, Mm(20.0), Mm(270.0), &font);

    // 保存文件
    doc.save(&mut std::fs::File::create("test.pdf")?)?;
    Ok(())
}

说明:

  • 创建A4尺寸文档(210x297mm)
  • 使用Helvetica字体
  • 在指定位置添加48pt大小的文本
  • 支持添加图形、图片等更多功能

其他可选库还有lopdfpdf-writer等,可根据具体需求选择。


在Rust中生成PDF文件,推荐使用 printpdf 库,它功能全面且易于使用。以下是详细方法和完整示例:

安装依赖

Cargo.toml 中添加:

[dependencies]
printpdf = "0.4.0"

完整示例代码

use printpdf::*;
use std::fs::File;
use std::io::BufWriter;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 创建PDF文档
    let (doc, page1, layer1) = PdfDocument::new(
        "PDF_Demo",
        Mm(210.0),  // A4宽度
        Mm(297.0),  // A4高度
        "Layer 1",
    );

    let current_layer = doc.get_page(page1).get_layer(layer1);

    // 设置字体
    let font = doc.add_builtin_font(BuiltinFont::Helvetica)?;

    // 添加文本
    current_layer.use_text("Hello PDF!", 48.0, Mm(20.0), Mm(270.0), &font);

    // 绘制图形
    let points = vec![
        (Point::new(Mm(50.0), Mm(150.0)), false),
        (Point::new(Mm(150.0), Mm(150.0)), false),
        (Point::new(Mm(150.0), Mm(250.0)), false),
        (Point::new(Mm(50.0), Mm(250.0)), false),
    ];
    
    current_layer.add_shape(Line {
        points,
        is_closed: true,
        has_fill: true,
        has_stroke: true,
        is_clipping_path: false,
    });

    // 保存文件
    doc.save(&mut BufWriter::new(File::create("demo.pdf")?))?;
    println!("PDF生成成功: demo.pdf");
    Ok(())
}

其他可选库

  1. lopdf - 底层PDF操作库
  2. pdf-writer - 专注于PDF生成的轻量级库

功能说明

  • 支持文本、图形、图像插入
  • 可设置页面尺寸、字体、颜色
  • 支持图层管理
  • 生成的PDF兼容标准阅读器

运行后将在项目根目录生成 demo.pdf,包含文本和一个矩形图形。建议查看 printpdf 文档获取更多高级功能使用方法。

回到顶部