/pdf-toolz-gm

NodeJS PDF utilities

Primary LanguageJavaScriptApache License 2.0Apache-2.0

pdf-toolz

NodeJS PDF utilities. Requires NodeJS 7+ due to async/await support

Installation

npm install mz pdf-toolz

Install external dependencys

  • ImageMagick => needed for PDF2Image
  • pdftk => needed for SplitCombine

sudo apt install imagemagick

sudo apt install pdftk

An Error will be thrown if they are not present.

Usage

Reading PDF page sizes

const fs = require('mz/fs');
const {readPDFPageSizes} = require('pdf-toolz/PageSizes');

async function readPageSizes() {
    const pdf = await fs.readFile('test/portrait-singlepage.pdf');
    const pageSizes = await pdfPageSizes(pdf);
    console.log(pageSizes); // [PageSize(842, 595)]);
}

readPageSizes()

Converting PDF to image

const fs = require('mz/fs');
const {pdfToImage} = require('pdf-toolz/PDF2Image');

async function exportPageImages() {
    const pdf = await fs.readFile('test/portrait-singlepage.pdf');
    const img = await pdfToImage(pdf, 'png', 400 /* dpi */);
    // Export the page image
    await fs.writeFile("image.png", img);
}

exportPageImages()

Splitting a PDF into pages (i.e. one PDF per page)

const fs = require('mz/fs');
const {splitPDF} = require('pdf-toolz/SplitCombine');

async function splitPDFIntoPages() {
    const pdf = await fs.readFile('test/portrait-multipage.pdf');
    const pages = await splitPDF(pdf);
    // Export the page images
    await fs.writeFile("page-1.pdf", pages[0]);
    await fs.writeFile("page-2.pdf", pages[1]);
    await fs.writeFile("page-3.pdf", pages[2]);
}

splitPDFIntoPages()

Combining (appending/joining/concatenating) multiple PDFs into one

const fs = require('mz/fs');
const {combinePDF} = require('pdf-toolz/SplitCombine');

async function combinePDFs() {
    // Read two PDFs to be combined
    const pdf1 = await fs.readFile('test/portrait-singlepage.pdf');
    const pdf2 = await fs.readFile('test/landscape-singlepage.pdf');
    const combined = await combinePDF([pdf1, pdf2]);
    // Write output file
    await fs.writeFile('combined.pdf', combined);
}

combinePDFs()

Testing

npm test