rusty_pdf 0.21.0

Crate adding text and images to existing pdf files
Documentation
use imagesize::{blob_size, ImageSize};
use lopdf::Document;
use std::{fs, io::Cursor};

use rusty_pdf::{PDFSigningDocument, Rectangle};

fn main() {
    let doc_mem = fs::read("examples/data/pdf_example.pdf").unwrap_or(vec![]);

    let doc = Document::load_mem(&doc_mem).unwrap_or_default();

    let image_mem = fs::read("examples/data/signature_example.png").unwrap_or(vec![]);

    let dimensions = blob_size(&image_mem).unwrap_or(ImageSize {
        width: 0,
        height: 0,
    });

    let scaled_vec = Rectangle::scale_image_on_width(
        150.0,
        200.0,
        500.0,
        (dimensions.width as f64, dimensions.height as f64),
    );

    let file = Cursor::new(image_mem);
    let mut test_doc = PDFSigningDocument::new(doc);
    let object_id = test_doc.add_object_from_scaled_vec(scaled_vec);
    let page_id = *test_doc
        .get_document_ref()
        .get_pages()
        .get(&1)
        .unwrap_or(&(0, 0));

    test_doc
        .add_signature_to_form(file.clone(), "signature_1", page_id, object_id)
        .unwrap();

    test_doc.finished().save("new_pdf_with_data.pdf").unwrap();
}