blob: b8c7f7dce1c0903b0bf80cf905fe5e46e31d345e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
use genpdf::Element as _;
use genpdf::{elements, style, fonts};
use crate::model::BCard;
pub fn genpdf(bcard: BCard) -> Vec<u8> {
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<u8> = Vec::new();
doc.render(&mut buf);
buf
}
|