Skip to main content

add Digital Signature to pdf with pdfKit and react-signature-canvas for NodeJS / GraphQL

to create hand-craft signature with signaturePad, add date and save to a pdf. then add signature PDF as an additional page attach to the main pdf.


** need remove alpha from image in order for pdfKit to create pdf by: 
1. set background color to whte

<SignaturePad
ref={sigPad}
backgroundColor="rgba(255,255,255,1)"
canvasProps={{ className: classes.sigPad }}
/>


2. to image/jpeg
const imageData = sigPad.current
.getTrimmedCanvas()
.toDataURL('image/jpeg')

3. merge pdfs using https://www.npmjs.com/package/easy-pdf-merge
export const mergePdfs = async (pdf1: string, pdf2: string, pdf: string) => {
return new Promise((resolve, reject) => {
merge([pdf1, pdf2], pdf, (error: any) => {
if (error) {
return reject(error)
}
resolve('')
})
})
}
====

Here are other ways to sign PDF:

https://www.youtube.com/watch?v=pUIWvJgkw8E

Node Library:


import signer from 'node-signpdf';
...
const signedPdf = signer.sign(
  fs.readFileSync(PATH_TO_PDF_FILE)
  fs.readFileSync(PATH_TO_P12_CERTIFICATE),
);

Comments

Popular posts from this blog

About GraphQL - Downside

Web caching complexity

File uploading. Since GraphQL doesn’t understand files, a file uploading feature is not included in its specification. You won’t have to deal with this limitation in case of REST, as there you can POST or PUT whatever content you want to.
To allow file uploads in your GraphQL web app, there are several options: using Base64 encoding. But it will make the request larger and expensive to encode/decode.making a separate API endpoint just for this purpose.using a library like Apollo for implementing the GraphQL multipart request specification.uploadFileToS3:combineResolvers( // isAuthenticated, async (parent, args, { models }) => { const { file } = awaitargs const { createReadStream, filename, mimetype, encoding } = awaitfile conststream = createReadStream() constresult = awaituploadFileToS3(filename, stream) returnresult } ),