printpdf 0.5.3

Rust library for writing PDF files
Documentation
extern crate printpdf;

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

fn main() {

    use printpdf::{
        calculate_points_for_circle,
        calculate_points_for_rect
    };

    let (doc, page1, layer1) = PdfDocument::new("printpdf circle test", Mm(210.0), Mm(297.0), "Layer 1");
    let current_layer = doc.get_page(page1).get_layer(layer1);

    let radius = Pt(40.0);
    let offset_x = Pt(10.0);
    let offset_y = Pt(50.0);

    let line = Line { 
        points: calculate_points_for_circle(radius, offset_x, offset_y), 
        is_closed: true, 
        has_fill: true, 
        has_stroke: true,
        is_clipping_path: false
    };

    current_layer.add_shape(line);

    let scale_x_rect = Pt(40.0);
    let scale_y_rect = Pt(10.0);
    let offset_x_rect = Pt(20.0);
    let offset_y_rect = Pt(5.0);

    let line = Line { 
        points: calculate_points_for_rect(scale_x_rect, scale_y_rect, offset_x_rect, offset_y_rect), 
        is_closed: true, 
        has_fill: true, 
        has_stroke: true,
        is_clipping_path: false
    };

    current_layer.add_shape(line);

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