1use imagesize::{blob_size, ImageSize};
2use lopdf::Document;
3use std::{fs, io::Cursor};
4
5use rusty_pdf::{PDFSigningDocument, Rectangle};
6
7fn main() {
8 let doc_mem = fs::read("examples/data/pdf_example.pdf").unwrap_or(vec![]);
9
10 let doc = Document::load_mem(&doc_mem).unwrap_or_default();
11
12 let image_mem = fs::read("examples/data/signature_example.png").unwrap_or(vec![]);
13
14 let dimensions = blob_size(&image_mem).unwrap_or(ImageSize {
15 width: 0,
16 height: 0,
17 });
18
19 let scaled_vec = Rectangle::scale_image_on_width(
20 150.0,
21 200.0,
22 500.0,
23 (dimensions.width as f64, dimensions.height as f64),
24 );
25
26 let file = Cursor::new(image_mem);
27 let mut test_doc = PDFSigningDocument::new(doc);
28 let object_id = test_doc.add_object_from_scaled_vec(scaled_vec);
29 let page_id = *test_doc
30 .get_document_ref()
31 .get_pages()
32 .get(&1)
33 .unwrap_or(&(0, 0));
34
35 test_doc
36 .add_signature_to_form(file.clone(), "signature_1", page_id, object_id)
37 .unwrap();
38
39 test_doc.finished().save("new_pdf_with_data.pdf").unwrap();
40}