JSignPdf is a free, open source application that adds digital signatures to PDF documents. It supports visible and hidden signatures, certificate levels, timestamping, and batch processing from the command line.
Features:
Version 3.2.0
A feature release. You can now sign into a form's existing signature fields, add or refresh a document timestamp without signing at all, and see a live preview of the visible signature as you place it — plus more control over output, better diagnostics, and a batch of signing and appearance fixes.
--sig-field (--list-sig-fields prints what a document offers); the field's own rectangle and page are used. Both engines support it. See issue 223.jsignpdf -eng dss --timestamp-only -ts <URL> doc.pdf adds an ETSI.RFC3161 document timestamp to any PDF with no key, to give it a trusted point in time or to refresh a PAdES B-LTA archive timestamp before its TSA certificate expires. In the UI it's the _Timestamp_ toolbar button and _Signing > Add Timestamp…_ (Ctrl+T). Needs the DSS engine. See issue 141.id-RSASSA-PSS, as eIDAS qualified certificates increasingly are, previously failed to sign on PKCS#11 tokens with a SignatureAlgorithm ... does not match error; the DSS engine now takes the algorithm from the certificate and produces real PSS. See issue 255.debug output for signing diagnostics — enable it on the new _General_ tab of Preferences or with -o debug=true to log the signing certificate chain and, for the DSS engine, every AIA/CRL/OCSP request and the trust anchors it loaded. Off by default. See issue 452.ui.language, issue 444); sign very large PDFs without a bigger heap via buffering.mode=temp (issue 178); the DSS engine now layers a background image behind the signature graphic and auto-scales text to fit the box (issue 433); DSS timestamp requests carry a nonce (issue 33); visible-signature images keep their aspect ratio on the DSS engine (issue 460) and description text fills the whole box on OpenPDF (issue 479); append mode no longer refuses to sign when it can't bump the declared PDF version (issue 467); clear the Recent files list on its own (issue 453); and the bundled Norwegian Bokmål translation now actually loads.