Components All New MacOS Windows Linux iOS
Examples Mac & Win Server Client Guides Statistic FMM Blog Deprecated Old

DynaPDF.SaveAndSignFileExt1

Saves and signs the current PDF.

Component Version macOS Windows Linux Server iOS SDK
DynaPDF 13.1 ✅ Yes ✅ Yes ✅ Yes ✅ Yes ✅ Yes
MBS( "DynaPDF.SaveAndSignFileExt1"; PDF { ; ContactInfo; Location; Reason; Signer; SignatureSize; useDetached } )   More

Parameters

Parameter Description Example Flags
PDF The PDF reference returned from DynaPDF.New. $pdf
ContactInfo The contact info. Optional
Location Signers location string $location Optional
Reason Reason string. $reason Optional
Signer Signers name string $signer Optional
SignatureSize The byte size for the signature expected.
This is an estimate on how much space to reserve in the PDF.
Default is 2048 bytes, enough for a 1024 bit signature.

You may sign a dummy text to check how big the signature is before signing the PDF.
Optional
useDetached Pass 1 to return data to sign instead of SHA1 hash of data to sign.
Be aware that the data to sign with detached mode can be several megabytes big depending on the PDF size.
0 Optional

Result

Returns hex text or error.

Description

Saves and signs the current PDF.
On success you either get back the PDF as container value (in memory PDF) or it returns OK after writing PDF to file (file based PDF).
No preview picture is added. Please use DynaPDF.GeneratePreview function if this is needed.

Same as DynaPDF.SaveAndSignFileExt, you need to create the signature and then call DynaPDF.SaveAndSignFileExt2 function to pass the final signature as hex string.

Returns hex encoded hash to sign.
As of v13.1 we have no MBS function to perform such a signature, but.we may add that if needed. But this function was made for people using external hardware to perform the signature.

Examples

Start signing process:

Set Variable [ $hash ; Value: MBS("DynaPDF.SaveAndSignFileExt1"; $pdf; "Test User"; "Chicago"; "") ]

Manually sign PDF content:

# manually load certificate and key
Set Variable [ $pkcs12 ; Value: MBS( "PKCS12.ReadFromFile"; "/Users/cs/Desktop/test_cert.pfx"; "123456") ]
# sign a test string to know size in advance
Set Variable [ $SampleSignature ; Value: MBS( "PKCS12.SignData"; $pkcs12; "hex"; "C9097E23869BC9903CE89E9562230C6FDCBC0F06"; ""; "hex"; "" ) ]
Set Variable [ $estimatedSignatureSize ; Value: Length($SampleSignature) / 2 + 5 ]
# now save and produce hash
Set Variable [ $hashToSign ; Value: MBS("DynaPDF.SaveAndSignFileExt1"; $pdf; "My ContactInfo"; "My Location"; "My Reason"; "My Signer"; $estimatedSignatureSize) ]
# sign the hash
Set Variable [ $Signature ; Value: MBS( "PKCS12.SignData"; $pkcs12; "hex"; $HashToSign; ""; "hex"; "" ) ]
# and finish the PDF
Set Field [ Merge PDFs::MergeStatus ; MBS("DynaPDF.SaveAndSignFileExt2"; $pdf; $signature; "Merged.pdf") ]

See also

Release notes

Example Databases

Blog Entries

This function checks for a license.

Created 18th January 2023, last changed 25th July 2023


DynaPDF.SaveAndSignFileExt - DynaPDF.SaveAndSignFileExt2