Narwhals Poke Mammals

    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/printer package

    0.4.0 • Public • Published


    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)




    npm i printer

    DownloadsWeekly Downloads






    Unpacked Size

    1.32 MB

    Total Files


    Last publish


    • ionlupascu