6.0.0 • Published 7 months ago

node-qpdf2 v6.0.0

Weekly downloads
234
License
MIT
Repository
github
Last release
7 months ago

node-qpdf2

Maintenance Node.js CI CodeQL npm npm qpdf 11+

A very simple wrapper for qpdf which is performs content-preserving transformations on PDF files. It includes encrypting and decrypting PDF files with AES 256, AES 128, RC4 (128 & 40) encryption algorithms. This is a fork of nrhirani/node-qpdf, adding Promises and Types, and is kept mostly up to date with qpdf.

Dependencies

  • qpdf
    • Version 11 is the minimum version for node-qpdf2 4.0+

Installation

  1. Install qpdf:
  2. Install node-qpdf:
    npm install node-qpdf2

Serverless?

This package can be uses on serverless platforms by using your vendor's layers functionality. Use the zip release from qpdf as the layer. For example, qpdf-11.1.0-bin-linux-x86_64.zip can be directly uploaded as a layer, and has been tested using Amazon Lambda.

Encryption

You can encrypt your PDF by following:

import { encrypt } from "node-qpdf2";

const pdf = {
  input: "./test/example.pdf",
  output: "/tmp/encrypted.pdf",
  password: "1234",
}

await encrypt(pdf);

Options for Encryption

Please see src/encrypt.ts for the latest options, as well as QPDF's documentation for information on what each restriction does.

Examples

Render and Save:

import { encrypt } from "node-qpdf2";

const options = {
    input: "./test/example.pdf",
    keyLength: 128,
    output: "/tmp/encrypted.pdf",
    password: 'YOUR_PASSWORD_TO_ENCRYPT',
    restrictions: {
        print: 'low',
        useAes: 'y'
    }
}

await encrypt(options);

Decryption

You can decrypt your PDF by following:

import { decrypt } from "node-qpdf2";

const options = {
  input: "/tmp/encrypted.pdf",
  output: "/tmp/decrypted.pdf",
  password: "YOUR_PASSWORD_TO_DECRYPT_PDF",
}

await decrypt(options);

PDF Encryption info

You can retrieve encryption information using the info function. This function will return a Promise. See here for more information.

import { info } from "node-qpdf2";

const options = {
  input: "/tmp/encrypted.pdf",
  password: "FILE_PASSWORD",
}

console.log(await info(options));

If the file is not encrypted, the result will be "File is not encrypted".

Coverage

File% Stmts% Branch% Funcs% LinesUncovered Line #s
All files100100100100
decrypt.ts100100100100
encrypt.ts100100100100
index.ts100100100100
info.ts100100100100
spawn.ts100100100100
utils.ts100100100100

Contributing

Maintained by Kyle McNally.

Bug reports and pull requests are welcome on GitHub at https://github.com/Sparticuz/node-qpdf2.

Sponsorship is also welcome

License

The npm package is available as open source under the terms of the MIT License.

6.0.0

7 months ago

5.1.0

1 year ago

5.0.0

1 year ago

4.1.0

1 year ago

4.0.1

2 years ago

4.0.0

2 years ago

4.0.2

2 years ago

3.0.0

2 years ago

2.0.0

3 years ago

1.4.0

3 years ago

1.3.3

4 years ago

1.3.0

4 years ago

1.2.1

4 years ago

1.2.0

4 years ago

1.1.2

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago