JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 17126
  • Score
    100M100P100Q138342F
  • License MIT

A wrapper for pdftk with streams and promises.

Package Exports

  • node-pdftk

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (node-pdftk) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

node-pdftk

A wrapper for PDFtk with streams and promises. All methods included.

Requirements

Make sure you have PDFtk installed and in your system path.

Mac users - Be aware of this PDFTk issue

Installation

npm install node-pdftk
const pdftk = require('node-pdftk');

Usage

Fill a form

pdftk
    .input('./myfile.pdf')
    .fillForm({
        some: 'data',
        to: 'fill',
        the: 'form',
    })
    .flatten()
    .output()
    .then(buffer => {
        // Do stuff with the output buffer
    })
    .catch(err => {
        // handle errors
    });

Catenate pages

pdftk
    .input({
        A: './page1.pdf',
        B: './page2.pdf',
    })
    .cat('A B')
    .output('./2pagefile.pdf')
    .then(buffer => {
        // Do stuff with the output buffer
    })
    .catch(err => {
        // handle errors
    });

Stamp page

pdftk
    .input('./iNeedALogo.pdf')
    .stamp('./logo.pdf')
    .output()
    .then(buffer => {
        // Do stuff with the output buffer
    })
    .catch(err => {
        // handle errors
    });

How it works

All instances must begin with the .input method and end with the .output method.

The .input method will accept a buffer, file path, or an array of buffer/file paths. It will then initialize the input of the command.

Any method called after input will simply add on commands. There is a certain amount of responsibility in the user's hands to make sure the commands will work properly in the order you call them. For example, you cannot call .fillForm().stamp(). Read the PDFtk docs to learn more.

The .output method simply executes the command and spits out the stdout either as a buffer or to a file.

  • Note: - The output method is not needed for all methods (e.g. burst, unpackFiles)

More Examples

Express example - render directly in browser

app.get('./file.pdf', (req, res, next) => {
    pdftk
        .input('./file.pdf')
        .fillForm(formdata)
        .flatten()
        .output()
        .then(buf => {
            res.type('application/pdf'); // If you omit this line, file will download
            res.send(buf);
        })
        .catch(next);
});

Input a buffer, output a file and a buffer

pdftk
    .input(fs.readFileSync('./file.pdf'))
    .output('./path/to/output.pdf')
    .then(buffer => {
        // Still returns a buffer
    })
    .catch(err => {
        // handle errors
    });

Useful chaining

pdftk
    .input('./form.pdf')
    .fillForm(myFormData)
    .flatten()
    .output()
    .then(buffer => {
        return pdftk
            .input(buffer)
            .stamp('./logo.pdf')
            .output()
    })
    .then(buffer => {
        // Do stuff with buffer
    })
    .catch(err => {
        // handle errors
    });