Skip to main content

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

PropertyTypeDescription
indexnumberSignature index
contentsUint8ArrayRaw signature bytes (PKCS#7 / CMS)
byteRangenumber[]Byte range of the signed data
subFilterstringSignature format (adbe.pkcs7.detached, etc.)
reasonstringStated reason for signing
signingTimestringSigning timestamp
docMDPPermissionnumberDocument 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

ValueMeaning
1No changes allowed
2Form filling and signing allowed
3Form 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) and byteRange, then validate using a crypto library like node-forge or the Web Crypto API.
  • Signature fields are also visible via doc.getFormFields() with type FormFieldType.Signature.