image/
image.rs

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}