pub struct Header {
pub height: f32,
pub content: Rc<dyn Fn(&PageContext) -> Element>,
}Expand description
A header band with a fixed, document-creation-time height (ADR-011): the closure may vary its content per page but never the reserved band size.
Fields§
§height: f32§content: Rc<dyn Fn(&PageContext) -> Element>Implementations§
Source§impl Header
impl Header
Sourcepub fn new(
height: f32,
content: impl Fn(&PageContext) -> Element + 'static,
) -> Header
pub fn new( height: f32, content: impl Fn(&PageContext) -> Element + 'static, ) -> Header
Examples found in repository?
examples/report.rs (lines 13-15)
10fn main() {
11 let mut doc = Document::new(PageFormat::A4)
12 .margin(Margin::symmetric(56.0, 56.0))
13 .header(Header::new(20.0, |_ctx| {
14 Text::new("Jahresbericht 2026 \u{2014} Muster GmbH").size(9.0).into()
15 }))
16 .header_visible_from(2)
17 .footer(Footer::new(20.0, |ctx| {
18 Text::new(format!("Seite {} von {}", ctx.page, ctx.total_pages))
19 .size(9.0)
20 .align(Align::Center)
21 .into()
22 }))
23 .watermark(Watermark::new("ENTWURF"));
24
25 // --- cover page -----------------------------------------------------
26 doc.add(Spacer::new(220.0));
27 doc.add(Text::new("Jahresbericht 2026").heading1().align(Align::Center));
28 doc.add(Spacer::new(8.0));
29 doc.add(Text::new("Muster GmbH").align(Align::Center));
30 doc.add(Text::new("vorgelegt am 20. August 2026").align(Align::Center));
31 doc.add(Element::PageBreak);
32
33 // --- content ---------------------------------------------------------
34 doc.add(Text::new("1. Zusammenfassung").heading1());
35 doc.add(Text::new(
36 "Das Geschäftsjahr 2026 war geprägt von stabilem Wachstum in allen \
37 Kernbereichen. Die folgenden Abschnitte fassen die wichtigsten \
38 Kennzahlen und Entwicklungen zusammen.",
39 ));
40 doc.add(Spacer::new(12.0));
41
42 doc.add(Text::new("2. Wichtigste Ereignisse").heading2());
43 doc.add(
44 List::new()
45 .bullet(Text::new("Markteinführung des neuen Produkts im zweiten Quartal"))
46 .bullet(Text::new("Erweiterung des Teams um 12 neue Mitarbeitende"))
47 .bullet(Text::new("Eröffnung eines zweiten Standorts")),
48 );
49 doc.add(Spacer::new(12.0));
50
51 doc.add(Text::new("3. Zeitplan").heading2());
52 doc.add(
53 List::new()
54 .numbered(Text::new("Kickoff und Planung (Januar \u{2013} Februar)"))
55 .numbered(Text::new("Umsetzung Phase 1 (M\u{e4}rz \u{2013} Juni)"))
56 .numbered(Text::new("Umsetzung Phase 2 (Juli \u{2013} Oktober)"))
57 .numbered(Text::new("Abschluss und Auswertung (November \u{2013} Dezember)")),
58 );
59 doc.add(Spacer::new(12.0));
60
61 doc.add(Text::new("3.1 Details").heading3());
62 doc.add(Text::new(
63 "Weitere Details zu den einzelnen Phasen finden sich im Anhang. \
64 Diese Überschrift bleibt dank keep_with_next garantiert mit \
65 diesem Absatz auf derselben Seite zusammen.",
66 ));
67
68 let bytes = doc.render().expect("render should succeed");
69 std::fs::write("report.pdf", &bytes).expect("write report.pdf");
70 println!("wrote report.pdf ({} bytes)", bytes.len());
71}Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Header
impl !Send for Header
impl !Sync for Header
impl !UnwindSafe for Header
impl Freeze for Header
impl Unpin for Header
impl UnsafeUnpin for Header
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more