use mr_pdf::{Align, Color, Orientation, PaperSize, Pdf, VAlign};
use std::fs::File;
fn main() -> std::io::Result<()> {
std::fs::create_dir_all("preview").unwrap_or(());
let file = File::create("preview/logbook_table.pdf")?;
let mut pdf = Pdf::stream(file)?;
pdf.set_paper_size(PaperSize::A4);
pdf.set_orientation(Orientation::Landscape);
pdf.set_margin(30.0);
pdf.text("Logbook Table Example (Fully featuring Rowspan and Colspan)").size(16.0);
pdf.advance_cursor(10.0);
pdf.table(|t| {
t.widths(vec![
90.0, 70.0, 60.0, 60.0, 60.0, 70.0, 70.0, 60.0, 60.0, 80.0, 80.0, ]);
t.header_style()
.font_size(9.0)
.bg_color(Color::Rgb(240, 240, 240));
t.row_style().font_size(9.0);
t.header_row_builder(|row| {
row.cell("(8) Driver's\nName & Surname").align(Align::Center).valign(VAlign::Center).rowspan(2);
row.cell("(9) Driving\nLicense No.").align(Align::Center).valign(VAlign::Center).rowspan(2);
row.cell("(10) Date\n(DD/MM/YYYY)").align(Align::Center).valign(VAlign::Center).rowspan(2);
row.cell("Transport Time").span(2).align(Align::Center);
row.cell("Workplace Details").span(2).align(Align::Center);
row.cell("Odometer Number").span(2).align(Align::Center);
row.cell("(17) Total\nDistance (km)").align(Align::Center).valign(VAlign::Center).rowspan(2);
row.cell("(18) Total\nWorking Hours").align(Align::Center).valign(VAlign::Center).rowspan(2);
});
t.header_row_builder(|row| {
row.cell("(11) Time\nOut").align(Align::Center);
row.cell("(12) Time\nIn").align(Align::Center);
row.cell("(13) From").align(Align::Center);
row.cell("(14) To").align(Align::Center);
row.cell("(15) Out").align(Align::Center);
row.cell("(16) In").align(Align::Center);
});
for i in 1..=10 {
t.row_builder(|row| {
row.cell(&format!("Driver #{}", i));
row.cell(&format!("DL-{:04}", i));
row.cell("11-03-2026");
row.cell("08:00");
row.cell("12:00");
row.cell("City A");
row.cell("City B");
row.cell("1000");
row.cell("1080");
row.cell("80");
row.cell("4");
});
}
})?;
pdf.finish()?;
println!("logbook_table.pdf created successfully in preview folder!");
Ok(())
}