Annotations for signatures

This commit is contained in:
Ana Gelez 2024-08-12 11:57:55 +02:00
parent 28905fedc1
commit afc8c2c11a

View File

@ -25,9 +25,7 @@ use cms::{
}, },
}; };
use pdf_writer::{ use pdf_writer::{
types::{FieldType, SigFlags}, types::SigFlags, writers::Form, Finish, Name, Pdf, Primitive, Ref, Str,
writers::{Field, Form},
Finish, Name, Pdf, Primitive, Ref, Str,
}; };
use rsa::{traits::SignatureScheme, Pkcs1v15Sign, RsaPrivateKey}; use rsa::{traits::SignatureScheme, Pkcs1v15Sign, RsaPrivateKey};
use sha2::Sha512; use sha2::Sha512;
@ -38,8 +36,11 @@ pub fn prepare(alloc: &mut Ref, pdf: &mut Pdf) -> (Range<usize>, Ref) {
let form_ref = alloc.bump(); let form_ref = alloc.bump();
let signature_field_ref = alloc.bump(); let signature_field_ref = alloc.bump();
let mut signature_field: Field = pdf.indirect(signature_field_ref).start(); let mut signature_field = pdf.indirect(signature_field_ref).dict();
signature_field.field_type(FieldType::Signature); signature_field.pair(Name(b"Type"), Name(b"Annot"));
signature_field.pair(Name(b"Subtype"), Name(b"Widget"));
signature_field.pair(Name(b"FieldType"), Name(b"Sig"));
signature_field.insert(Name(b"Rect")).array().items([0, 0, 0, 0]);
let mut signature_dict = signature_field.insert(Name(b"V")).dict(); let mut signature_dict = signature_field.insert(Name(b"V")).dict();
signature_dict.pair(Name(b"Type"), Name(b"Sig")); signature_dict.pair(Name(b"Type"), Name(b"Sig"));
signature_dict.pair(Name(b"Filter"), Name(b"Adobe.PPKLite")); signature_dict.pair(Name(b"Filter"), Name(b"Adobe.PPKLite"));