Digital Signatures
Inspect digital signature data embedded in signed PDFs. Requires the full tier.
import { PDFDocument } from "pdfnova";
Read Signatures
const doc = await PDFDocument.open(signedPdf);
const signatures = await doc.getSignatures();
for (const sig of signatures) {
console.log(`Reason: ${sig.reason}`);
console.log(`Time: ${sig.signingTime}`);
console.log(`Filter: ${sig.subFilter}`);
console.log(`Permissions: ${sig.docMDPPermission}`);
}
SignatureData
| Property | Type | Description |
|---|---|---|
index | number | Signature index |
contents | Uint8Array | Raw signature bytes (PKCS#7 / CMS) |
byteRange | number[] | Byte range of the signed data |
subFilter | string | Signature format (adbe.pkcs7.detached, etc.) |
reason | string | Stated reason for signing |
signingTime | string | Signing timestamp |
docMDPPermission | number | Document modification permission level |
Format Signature Info
import { SignatureInfo } from "pdfnova";
for (const sig of signatures) {
console.log(SignatureInfo.formatSummary(sig));
console.log(SignatureInfo.getSignatureFormat(sig.subFilter));
}
DocMDP Permission Levels
| Value | Meaning |
|---|---|
1 | No changes allowed |
2 | Form filling and signing allowed |
3 | Form filling, signing, and annotation allowed |
Notes
- pdfnova reads signature data from PDFium but does not perform cryptographic validation. For full verification, extract the
contents(PKCS#7 data) andbyteRange, then validate using a crypto library likenode-forgeor the Web Crypto API. - Signature fields are also visible via
doc.getFormFields()with typeFormFieldType.Signature.