Skip to content

calipersjs/calipers-pdf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

calipers-pdf npm version Build Status

PDF Plugin for Calipers. It can be used to measure the page dimensions of a PDF and to check whether or not a PDF is encrypted (password-protected).

Installation

The Poppler library C++ interface is required for PDF support.

To install Poppler on Mac OS X using Homebrew:

brew install poppler

To install Poppler on Ubuntu:

apt-get install pkg-config
apt-get install libpoppler-cpp-dev

To use, install calipers and calipers-pdf via npm:

npm install calipers calipers-pdf

Usage

Calipers must be initialized by calling the required function with supported file types passed in, in this case 'pdf'.

// Initializes Calipers with support for calipers-pdf.
var Calipers = require('calipers')('pdf');

Calipers exposes a single function, measure, once initialized.

measure(filePath, [callback])

Measures the file at the given path.

  • filePath - The path of the file.
  • callback - called when the file has been measured
    • err - An Error is provided for unsupported file types or corrupt files.
    • result - Contains the following keys:
      • type - a string representing the file type (e.g. 'pdf')
      • encrypted - a boolean which is true if the PDF is encryted, false otherwise
      • pages - an array of objects with keys width and height which values are floating-point PostScript Point dimensions

Examples

var Calipers = require('calipers')('pdf');

// You can use a callback:
Calipers.measure('/path/to/document.pdf', function (err, result) {
  // result:
  // {
  //   type: 'pdf',
  //   encrypted: false,
  //   pages: [
  //     {
  //       width: 450,
  //       height: 670
  //     },
  //     {
  //       width: 450,
  //       height: 670
  //     }
  //   ]
  // }
});

// Or you can use promises:
Calipers.measure('/path/to/file.pdf')
.then(function (result) {
  // result:
  // {
  //   type: 'pdf',
  //   encrypted: false,
  //   pages: [
  //     {
  //       width: 450,
  //       height: 670
  //     }
  //   ]
  // }
});

// Or you can use async/await

const result = awawit Calipers.measure('/path/to/file.pdf')
  // result:
  // {
  //   type: 'pdf',
  //   encrypted: false,
  //   pages: [
  //     {
  //       width: 450,
  //       height: 670
  //     }
  //   ]
  // }
  

Issues/Bugs

Please report any issues in the core Calipers repository.

Contribute

The easiest and most helpful way to contribute is to find a file that calipers incorrectly measures, and submit a PR with the file. The tests automatically run against all files in the test/fixtures directory, so simply drop it into the appropriate subdirectory, and name it according to its size <width>x<height>x<pages>.pdf.