jsPDF Project to Encrypt PDF Documents With Password in Node.js & Express Using node-qrcode Library Full Project For Beginners

 

npm init -y

 

 

npm i express ejs

 

 

npm i node-qrcode

 

 

Installation

  1. Install qpdf:
  2. Install node-qpdf

 

 

Encryption

 

 

var qpdf = require('node-qpdf');

var options = {
    keyLength: 128,
    password: 'YOUR_PASSWORD_TO_ENCRYPT'
}

qpdf.encrypt(localFilePath, options);

 

 

 

Options for Encryption

The following are required options

  • keyLength: – a number which defines the encryption algorithm to be used. Values can be 40, 128 and 256 only.
  • password: – a string containing the secret password which will be further used to unlock the PDF.

You might want to set other options for each encryption algorithm inside restrictions: JSON according to the keyLength you choose :-

Key Length: 40

Option Value Description
print: 'y''n' Determines whether or not to allow printing.
modify: 'y''n' Determines whether or not to allow document modification.
extract: 'y''n' Determines whether or not to allow text/image extraction.
annotate: 'y''n' Determines whether or not to allow comments and form fill-in and signing.

Key Length: 128

Option Value Description
print: 'full''low''none' full: allow full printing. low: allow low-resolution printing only. none: disallow printing.
modify: 'all''annotate''form''assembly''none' all: allow full document modification. annotate: allow comment authoring and form operations. form: allow form field fill-in and signing. assembly: allow document assembly only. none: allow no modifications.
extract: 'y''n' Determines whether or not to allow text/image extraction.
useAes: 'y''n' AES encryption will be used instead of RC4 encryption.
accessibility: 'y''n' Determines whether or not to allow accessibility to visually impaired.

Key Length: 256

Option Value Description
print: 'full''low''none' full: allow full printing. low: allow low-resolution printing only. none: disallow printing.
modify: 'all''annotate''form''assembly''none' all: allow full document modification. annotate: allow comment authoring and form operations. form: allow form field fill-in and signing. assembly: allow document assembly only. none: allow no modifications.
extract: 'y''n' Determines whether or not to allow text/image extraction.
accessibility: 'y''n' Determines whether or not to allow accessibility to visually impaired.

 

 

 

Render and Save:

 

 

var qpdf = require('node-qpdf');

var options = {
    keyLength: 128,
    password: 'YOUR_PASSWORD_TO_ENCRYPT',
    restrictions: {
        print: 'low',
        useAes: 'y'
    }
}

qpdf.encrypt(localFilePath, options, outputFilePath);

 

 

Render and Stream:

 

 

var qpdf = require('node-qpdf');

var options = {
    keyLength: 256,
    password: 'YOUR_PASSWORD_TO_ENCRYPT',
    restrictions: {
        modify: 'none',
        extract: 'n'
    }
}

var doc = qpdf.encrypt(localFilePath, options, outputFilePath);

doc.stdout.pipe(res);

res.writeHead(200, {
    'Content-Type': 'application/pdf',
    'Access-Control-Allow-Origin': '*',
    'Content-Disposition': 'inline; filename=order.pdf'
});

 

 

Decryption

You can decrypt your PDF by following:

var qpdf = require('node-qpdf');

qpdf.decrypt(localFilePath, 'YOUR_PASSWORD_TO_DECRYPT_PDF');

Examples

Render and Save:

var qpdf = require('node-qpdf');

qpdf.decrypt(localFilePath, 'YOUR_PASSWORD_TO_DECRYPT_PDF', outputFilePath);

Render and Stream:

var qpdf = require('node-qpdf');

var doc = qpdf.decrypt(localFilePath, 'YOUR_PASSWORD_TO_DECRYPT_PDF', outputFilePath);

doc.stdout.pipe(res);

res.writeHead(200, {
    'Content-Type': 'application/pdf',
    'Access-Control-Allow-Origin': '*',
    'Content-Disposition': 'inline; filename=order.pdf'
});

Leave a Reply