Skip to content
Native node.js printer
Branch: master
Clone or download
tojocky Merge pull request #198 from peterjuras/master
Fix job timestamps on 32 Bit systems
Latest commit dff584d Nov 16, 2017
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples corrected broken implementation of printDirect with buffer data for n… Oct 22, 2015
lib get i value from printers.length Dec 2, 2016
src Cast job times to double Nov 15, 2017
test added tests and progressed on node-pre-gyp closes #150 Nov 17, 2016
tools fix: node file path Nov 10, 2016
.gitignore build: corrected on command CXX(target) Release/… Nov 11, 2016
.npmignore .npmigonre Jun 30, 2012
.travis.yml try to make travis and appveyor happy Nov 17, 2016
ChangeLog Update ChangeLog Sep 10, 2016
Gruntfile.js grunt: add build-nw Mar 3, 2015 Update Readme Feb 4, 2017
appveyor.yml appveyor: decrease the node version from 5.9 to 5.8 to fund libraries Nov 28, 2016
binding.gyp build: corrected on command CXX(target) Release/… Nov 11, 2016
printer.js printDirect: print raw data. Is useful to communicate direct with pri… Jun 30, 2012


Native bind printers on POSIX and Windows OS from Node.js, iojs and node-webkit.

Linux Windows Dependencies

If you have a problem, ask question to Gitter or find/create a new Github issue


I was involved in a project where I need to print from Node.JS. This is the reason why I created this project and I want to share my code with others.


  • no dependecies;
  • native method wrappers from Windows and POSIX (which uses CUPS 1.4/MAC OS X 10.6) APIs;
  • compatible with node v0.8.x, 0.9.x and v0.11.x (with 0.11.9 and 0.11.13);
  • compatible with node-webkit v0.8.x and 0.9.2;
  • getPrinters() to enumerate all installed printers with current jobs and statuses;
  • getPrinter(printerName) to get a specific/default printer info with current jobs and statuses;
  • getPrinterDriverOptions(printerName) (POSIX only) to get a specific/default printer driver options such as supported paper size and other info
  • getSelectedPaperSize(printerName) (POSIX only) to get a specific/default printer default paper size from its driver options
  • getDefaultPrinterName() return the default printer name;
  • printDirect(options) to send a job to a specific/default printer, now supports CUPS options passed in the form of a JS object (see cancelJob.js example). To print a PDF from windows it is possible by using node-pdfium module to convert a PDF format into EMF and after to send to printer as EMF;
  • printFile(options) (POSIX only) to print a file;
  • getSupportedPrintFormats() to get all possible print formats for printDirect method which depends on OS. RAW and TEXT are supported from all OS-es;
  • getJob(printerName, jobId) to get a specific job info including job status;
  • setJob(printerName, jobId, command) to send a command to a job (e.g. 'CANCEL' to cancel the job);
  • getSupportedJobCommands() to get supported job commands for setJob() depends on OS. 'CANCEL' command is supported from all OS-es.

How to install:

Make sure you have Python 2.x installed on your system. Windows users will also require Visual Studio (2013 Express is a good fit)


Prebuilt node builds

npm install printer --target_arch=ia32
npm install printer --target_arch=x64

Prebuilt electron builds

Say you are installing 1.4.5 electron. Please check the Releases for supported Electron versions

npm install printer --runtime=electron --target=1.4.5 --target_arch=x64
npm install printer --runtime=electron --target=1.4.5 --target_arch=ia32

For building after install

npm install -g node-gyp
npm install printer --msvs_version=2013  --build-from-source=node_printer

or direct from git:

npm install git+

if you want to to run in nwjs then rebuild the module with nw-gyp:

npm install -g nw-gyp
cd node_modules/printer
nw-gyp rebuild

For specific distribution --dist-url node-gyp parameter should be used. Example for electron:

node-gyp rebuild --target=0.37.4 --arch=x64 --dist-url=

Ubuntu User : You need to install libcups2-dev package sudo apt-get install libcups2-dev

How to use:

See examples



Feel free to download, test and propose new futures


The MIT License (MIT)

You can’t perform that action at this time.