Xojo Developer Conference
25/27th April 2018 in Denver.
MBS Xojo Conference
6/7th September 2018 in Munich, Germany.

DynaPDF Manual - Page 181

Previous Page 180   Index   Next Page 182

Function Reference
Page 181 of 750
The parameter Password holds the password to decrypt the private key. The parameters Reason and
Location are both optional. These strings are printed into the signature field if set.
Digital signatures are stored in a signature field which is a special type of Interactive Form field. If
no signature field exist when the function is called then DynaPDF creates an invisible signature field.
Hidden signature fields appear in the signatures tab of Adobe's Acrobat.
If one or more signature fields exist when the function is called then the first signature field is used
for signing. Signature fields can be created with the function CreateSigField() but it is also possible to
import empty signature fields from an external PDF file.
Importing signed PDF files
Signed PDF files can only be changed, without invalidating existing signatures, when changes are
stored with an incremental update. An incremental update is a special way to modify a PDF file;
changes are appended to the end of the file, leaving its original contents intact. This technique is
required since altering any existing bytes in the file invalidates existing signatures.
However, incremental updates are not supported by DynaPDF that is the reason why only empty
signature fields are imported. Because DynaPDF creates always a completely new PDF file, it makes
no sense to import existing signatures, they would become invalid.
Possible function errors
When trying to sign a PDF file the function must first parse the certificate file before a signature can
be created. This process can fail, due to an invalid file path or due to an unsupported certificate file
format that was passed to the function. The PDF file will only be closed and signed if the certificate
file was valid and if no other error occurred during the parsing process.
If an error occurred due to an invalid certificate file, invalid file path and so on, the function returns
zero and passes an error message to the error callback function if any. All errors during the parsing
process of the certificate file are non-fatal so that the PDF file is still in memory when the function
returns. It is then possible to change the certificate file and trying to sign the PDF file again.
To determine whether the PDF was already deleted or of it is still in memory use the function
HaveOpenDoc(). The function returns true if the PDF file is still in memory. If the function returns
false, the last error was fatal and the PDF file has already been deleted.
The buffer of a memory based PDF file can be returned by GetBuffer() after this function was called.
Note that GetBuffer() does not free the used resources because it returns a pointer to the original
buffer. After the buffer was processed by your application call FreePDF() to free the uses resources.
See also CreateNewPDF(), GetBuffer(), FreePDF().
Remarks:
Further information about digital signatures can be found under Digital Signatures. To encrypt and
sign a PDF file use the function CloseAndSingFileEx(). The appearance of a signature field can be
user defined. See CreateSigFieldAP() for further information.
 

Previous topic: CloseAndSignFile

Next topic: Importing signed PDF files