Signs pdf files. Uses pdf-lib to add signature to pdf files and node-forge to sign documents and verify the integrity of signed documents.
npm i sign-pdf-lib
Instantiate signer:
const settings: SignatureSettings {
signatureLength: ...,
rangePlaceHolder: ...,
p12Certificate: await fse.readFile(...),
certificatePassword: '...'
}
const pdfSigner = new PdfSigner(settings);
or
const settings: SignatureSettings {
signatureLength: ...,
rangePlaceHolder: ...,
pemCertificate: await fse.readFile(..., 'ascii'),
pemKey: await fse.readFile(..., 'ascii'),
certificatePassword: '...'
}
const pdfSigner = new PdfSigner(settings);
const parameters: SignDigitalParameters = {
pageNumber: 1,
name: 'Test Signer',
location: 'Timisoara',
reason: 'Signing',
contactInfo: 'signer@semnezonline.ro',
visual: {
background: await fse.readFile(...),
rectangle: {
left: 50,
top: 641,
right: 264,
bottom: 711
}
}
};
IMPORTANT: if coordinate are negative, they are considered from right or bottom.
For non visual signatures, just omit visual field:
const parameters: SignDigitalParameters = {
pageNumber: 1,
name: 'Test Signer',
location: 'Timisoara',
reason: 'Signing',
contactInfo: 'signer@semnezonline.ro',
};
const pdf = await fse.readFile(...);
const signedPdf = await pdfSigner.signAsync(pdf, parameters);
const pdf = await fse.readFile(...);
const placeholderPdf = await pdfSigner.addPlaceholderAsync(pdf, parameters);
const parameters: AddFieldParameters = {
pageNumber: 1,
rectangle: {
left: 50,
top: 641,
right: 264,
bottom: 711
}
};
IMPORTANT: if coordinate are negative, they are considered from right or bottom.
const pdf = await fse.readFile(...);
const fieldPdf = await pdfSigner.addFieldAsync(pdf, parameters);
const pdf = await fse.readFile(...);
const fields = await pdfSigner.getFieldsAsync(pdf);
const parameters: SignFieldParameters = {
fieldName: 'Signature1,
name: 'Test Signer',
location: 'Timisoara',
reason: 'Signing',
contactInfo: 'signer@semnezonline.ro',
background: await fse.readFile(...),
texts: [
{
lines: [
'JOHN',
'DOE'
]
}, {
lines: [
'Digitally signed by',
'JOHN DOE',
'Date: 2023.11.03',
'20:28:46 +02\'00\''
]
}
]
};
const pdf = await fse.readFile(...);
const signedPdf = await pdfSigner.signFieldAsync(pdf, parameters);
const pdf = await fse.readFile(...);
const checks = await pdfSigner.verifySignaturesAsync(pdf);
IMPORTANT!: This function checks only the integrity of signatures (if the document has been changed after it has been signed).