SignDoc SDK (.NET without exceptions)  5.0.0
Migrating from SignDoc SDK 4.3.0 to SignDoc SDK 4.3.1

The RSA-PSS signature scheme can now be used for PKCS #7 signatures with RSA keys, see new integer parameter "RSASignatureScheme". v_2_0 of de.softpro.doc.SignRSA has been renamed v_2_0_salt0, v_2_0_salt32 has been added.

de.softpro.doc.SignDocVerificationResult.getSignatureBlob() supports an additional parameter: "DigestEncryptionAlgorithm". de.softpro.doc.SignDocVerificationResult.getSignatureString() supports an additional parameter: "DigestEncryptionAlgorithmOID".

de.softpro.doc.SignDocDocument.isTaggedPDF() can be used to find out if the document is a Tagged PDF document.

There is a new flag for de.softpro.doc.SignDocDocument.setFlags(), de.softpro.doc.SignDocDocument.DocumentFlags.RequireAlternateFieldName which prohibits adding fields without alternate name and removing the alternate name from existing fields. If this flag is not set and the document claims PDF/UA conformance, a default value will be provided for the alternate name.

There is a new flag for de.softpro.doc.SignDocDocument.setFlags(), de.softpro.doc.SignDocDocument.DocumentFlags.RequireLang which requires a language identifier to be passed for text added to PDF/UA documents that do not define a default language.

SignDoc SDK now tries to insert new objects into the logical structure even if de.softpro.doc.SignDocDocument.setFlags() flag de.softpro.doc.SignDocDocument.DocumentFlags.PreventBreakingTaggedPDF is not set.

There is a new flag for de.softpro.doc.SignDocDocument.setFlags(), de.softpro.doc.SignDocDocument.DocumentFlags.RequireAlternateFieldName which prohibits adding fields without alternate name and removing the alternate name from existing fields. If this flag is not set and the document claims PDF/UA conformance, a default value will be provided for the alternate name.

There is a new flag for de.softpro.doc.SignDocDocument.setFlags(), de.softpro.doc.SignDocDocument.DocumentFlags.RequireLang which makes some functions fail unless a language identifier is provided by the document or the caller.

There are new functions for adding images with alternate descriptions to PDF documents: de.softpro.doc.SignDocDocument.addImageFromBlob2(), de.softpro.doc.SignDocDocument.addImageFromFile2(), de.softpro.doc.SignDocDocument.importPageFromImageBlob2(), and de.softpro.doc.SignDocDocument.importPageFromImageFile2(). There are new functions for adding text with language identifier to PDF documents: de.softpro.doc.SignDocDocument.addText2() and de.softpro.doc.SignDocDocument.addTextRect2().

The natural language of a PDF document can be obtained by calling de.softpro.doc.SignDocDocument.getDocumentLanguage() and set by calling de.softpro.doc.SignDocDocument.setDocumentLanguage().

The default behavior is such that existing, unmodified code does not break PDF/UA conformance but may add meaningless alternate descriptions and incorrect language identifiers just to keep automatic PDF/UA validators happy. To really support PDF/UA, set both de.softpro.doc.SignDocDocument.DocumentFlags.RequireAlternateFieldName and de.softpro.doc.SignDocDocument.DocumentFlags.RequireLang, use the new functions listed above, and set a meaningful alternate field name.

Escape sequences

SignDoc SDK now supports escape sequences in PDF text strings. However, these escape sequences are nearly useless as there is very little support in existing PDF readers.

There is a new flag for de.softpro.doc.SignDocDocument.setFlags(), de.softpro.doc.SignDocDocument.DocumentFlags.KeepEscapeSequences which causes escape sequences which select the natural language in text strings to be kept in strings rather than being removed. It is recommended to set that flag and use de.softpro.doc.SignDocDocument.withoutEscapeSequences() for removing the escape sequences before showing a text string to a user. Use de.softpro.doc.SignDocDocument.splitEscapeSequences() to split a text string into escape sequences and text segments. If you serialize and deserialize a SignDocField object and that flag is not set, the escape sequences will get lost.

New function de.softpro.doc.SignDocDocument.withEscapeSequence() prepends an escape sequence selecting the natural language to a string.

New flag for de.softpro.doc.SignDocDocument.setFlags(), de.softpro.doc.SignDocDocument.DocumentFlags.UseEscapeSequences causes escape sequences to be used for encoding the language in the alternate name of fields. This allows having alternate names with different languages in a single document. However, existing assistive technologies do not support escape sequences.