Signatures in iOS Viewer
This section only applies if you licensed the Annotations and Digital Signatures components before 1 May 2021. In this case, PSPDFKit comes with a ready-to-use user interface that allows you to provide digital signing capabilities inside your apps. In all other cases, digital signatures can be created programmatically.
When creating a signature in the UI, you can provide a certificate or draw an ink signature, or both. The document is only digitally signed if a certificate has been provided. If, in addition to selecting the certificate, an ink signature was drawn, it will be embedded in the appearance of the signature form element. If no certificate has been provided, only the ink signature is added to the document, and the document won’t be digitally signed.
By default, the user is able to select a certificate if there are
registeredSigners
available. This behavior can be customized viaPDFConfiguration.signatureCertificateSelectionMode
.
Signing with a Form Element
If there are no stored signatures in the shared SignatureStore
, then tapping an empty signature form element shows a SignatureViewController
, which is where you can both sign a document with an ink signature and assign a certificate to your signature.
If there are already stored signatures, a SignatureSelectorViewController
is shown instead, allowing you to either choose an existing signature or create a new one.
Signing without a Form Element
If a document doesn’t have a signature form element, you can still digitally sign it. The way to initiate this flow is to tap on the signature toolbar button and then select or create a signature, as shown above. If you added a certificate to the signature, you’ll be asked to select the signature placement on the page; otherwise, the signature is placed into the document and you can move and resize it to your liking. After making the selection, you’ll be asked for the password of the certificate. Finally, after entering the password, the document will be signed.
Ink Signature Behavior
There’s a difference between signature form elements that have been signed with an ink signature only and form elements signed with a digital signature (which might also contain an ink signature). You can only add one or the other to a single signature form element. A signature form element is considered signed whenever there’s an overlapping ink signature on it, or if it contains a digital signature. If there’s an existing ink signature in a signature form element, you’ll first need to delete it before you can add a digital signature to the element.
Only Allow Digital Signing
By default, users can create both an ink signature without a signer and a digital signature by selecting a signer in SignatureViewController
. There might be use cases where you don’t want users to create an ink signature at all and only allow digitally signing via a predefined signer, without users being able to change it. This can be done by subclassing SignatureViewController
and overriding the signer
property to return the predefined signer that needs to be used. Additionally, you should set certificateSelectionMode
to .never
— either on the signature view controller directly, or on PDFConfiguration.signatureCertificateSelectionMode
— to disable the user choosing another signer.
To allow the user to select a different certificate but still prevent the creation of a normal ink signature, you can subclass CertificatePickerViewController
and only show the signers you want to allow the user to select by overriding the default CertificatePickerViewController
via overrideClass(_:with:)
.