use genpdf::Element as _; use genpdf::{elements, style, fonts}; use crate::model::BCard; pub fn genpdf(bcard: BCard) -> Vec { let regular_bytes = include_bytes!("../fonts/fira-sans.regular.ttf"); let regular_font_data = fonts::FontData::new(regular_bytes.to_vec(), None).expect("font data should be correct"); let bold_bytes = include_bytes!("../fonts/fira-sans.bold.ttf"); let bold_font_data = fonts::FontData::new(bold_bytes.to_vec(), None).expect("font data should be correct"); let italic_bytes = include_bytes!("../fonts/fira-sans.italic.ttf"); let italic_font_data = fonts::FontData::new(italic_bytes.to_vec(), None).expect("font data should be correct"); let bold_italic_bytes = include_bytes!("../fonts/fira-sans.bold-italic.ttf"); let bold_italic_font_data = fonts::FontData::new(bold_italic_bytes.to_vec(), None).expect("font data should be correct"); let font_family = fonts::FontFamily{ regular: regular_font_data, bold: bold_font_data, italic: italic_font_data, bold_italic: bold_italic_font_data }; let mut doc = genpdf::Document::new(font_family); doc.set_title("BCard test"); doc.set_minimal_conformance(); doc.set_margins(10); doc.set_line_spacing(1.25); #[cfg(feature = "hyphenation")] { use hyphenation::Load; doc.set_hyphenator( hyphenation::Standard::from_embedded(hyphenation::Language::EnglishUS) .expect("Failed to load hyphenation data"), ); } doc.push( elements::Paragraph::new("genpdf Demo Document") .aligned(elements::Alignment::Center) .styled(style::Style::new().bold().with_font_size(20)), ); // TODO fill doc with real data let mut buf: Vec = Vec::new(); doc.render(&mut buf); buf }