example_add_attachment_annotation/
example_add_attachment_annotation.rs1use 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}