example_add_attachment_annotation/
example_add_attachment_annotation.rs

1use std::{cell::RefCell, fs, rc::Rc};
2
3use fpdf::{Attachment, Fpdf, Pdf, Unit};
4
5fn main() {
6    let mut pdf = Fpdf::default();
7
8    pdf.set_font("Arial", "", Unit::pt(12.0));
9    pdf.add_page();
10
11    let demo_txt = fs::read("examples/resources/demo.txt").expect("could not read 'demo.txt' file");
12    let demo_attachment = Rc::new(RefCell::new(Attachment::new(
13        demo_txt,
14        "demo.txt",
15        "Demo Text !",
16    )));
17
18    pdf.set_xy(Unit::mm(5.0), Unit::mm(10.0));
19    pdf.rect(
20        Unit::mm(2.0),
21        Unit::mm(10.0),
22        Unit::mm(50.0),
23        Unit::mm(15.0),
24        "D",
25    );
26    pdf.add_attachment_annotation(
27        demo_attachment.clone(),
28        Unit::mm(2.0),
29        Unit::mm(10.0),
30        Unit::mm(50.0),
31        Unit::mm(15.0),
32    );
33    pdf.cell(Unit::mm(50.0), Unit::mm(15.0), "A first link");
34
35    pdf.set_xy(Unit::mm(5.0), Unit::mm(80.0));
36    pdf.rect(
37        Unit::mm(2.0),
38        Unit::mm(80.0),
39        Unit::mm(50.0),
40        Unit::mm(15.0),
41        "D",
42    );
43    pdf.add_attachment_annotation(
44        demo_attachment.clone(),
45        Unit::mm(2.0),
46        Unit::mm(80.0),
47        Unit::mm(50.0),
48        Unit::mm(15.0),
49    );
50    pdf.cell(Unit::mm(50.0), Unit::mm(15.0), "A second link (no copy)");
51
52    pdf.output_file_and_close("example_add_attachment_annotation.pdf")
53        .expect("could not produce PDF file");
54}