mirror of
https://github.com/typst/typst
synced 2025-05-18 19:15:29 +08:00
Annotations for signatures
This commit is contained in:
parent
28905fedc1
commit
afc8c2c11a
@ -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"));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user