summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAna Gelez <ana@gelez.xyz>2024-08-12 11:57:55 +0200
committerAna Gelez <ana@gelez.xyz>2024-08-12 11:57:55 +0200
commitafc8c2c11a736f212a0ce205db01fa93bfa67337 (patch)
tree0241858585a2464f353e04bfcad8b177f97ba70b
parent28905fedc1e994bfd2ec16e50711639aa1247c28 (diff)
Annotations for signatures
-rw-r--r--crates/typst-pdf/src/signature.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/crates/typst-pdf/src/signature.rs b/crates/typst-pdf/src/signature.rs
index 92c2c674..266d028a 100644
--- a/crates/typst-pdf/src/signature.rs
+++ b/crates/typst-pdf/src/signature.rs
@@ -25,9 +25,7 @@ use cms::{
},
};
use pdf_writer::{
- types::{FieldType, SigFlags},
- writers::{Field, Form},
- Finish, Name, Pdf, Primitive, Ref, Str,
+ types::SigFlags, writers::Form, Finish, Name, Pdf, Primitive, Ref, Str,
};
use rsa::{traits::SignatureScheme, Pkcs1v15Sign, RsaPrivateKey};
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 signature_field_ref = alloc.bump();
- let mut signature_field: Field = pdf.indirect(signature_field_ref).start();
- signature_field.field_type(FieldType::Signature);
+ let mut signature_field = pdf.indirect(signature_field_ref).dict();
+ 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();
signature_dict.pair(Name(b"Type"), Name(b"Sig"));
signature_dict.pair(Name(b"Filter"), Name(b"Adobe.PPKLite"));