Skip to main content

create_pdf/
create_pdf.rs

1//! Create a simple PDF document.
2//!
3//! Usage: cargo run --example create_pdf -- [output.pdf]
4
5use justpdf::{DocumentBuilder, PageBuilder};
6
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8    let args: Vec<String> = std::env::args().collect();
9    let output = args.get(1).map(|s| s.as_str()).unwrap_or("created.pdf");
10
11    let mut builder = DocumentBuilder::new();
12    builder.set_title("Created by justpdf");
13    builder.set_author("justpdf example");
14
15    let font = builder.add_standard_font("Helvetica");
16
17    // Page 1
18    let mut page1 = PageBuilder::new(612.0, 792.0);
19    page1.add_font(&font, "Helvetica");
20    page1.begin_text();
21    page1.set_font(&font, 36.0);
22    page1.move_to(72.0, 700.0);
23    page1.show_text("Hello, justpdf!");
24    page1.end_text();
25
26    page1.begin_text();
27    page1.set_font(&font, 14.0);
28    page1.move_to(72.0, 650.0);
29    page1.show_text("This PDF was created with the justpdf Rust library.");
30    page1.end_text();
31
32    // Draw a rectangle
33    page1.set_fill_rgb(0.2, 0.4, 0.8);
34    page1.fill_rect(72.0, 500.0, 468.0, 2.0);
35
36    builder.add_page(page1);
37
38    // Page 2
39    let mut page2 = PageBuilder::new(612.0, 792.0);
40    page2.add_font(&font, "Helvetica");
41    page2.begin_text();
42    page2.set_font(&font, 24.0);
43    page2.move_to(72.0, 700.0);
44    page2.show_text("Page 2");
45    page2.end_text();
46    builder.add_page(page2);
47
48    let bytes = builder.build()?;
49    std::fs::write(output, &bytes)?;
50    println!("Created {output} ({} bytes, 2 pages)", bytes.len());
51
52    Ok(())
53}