Skip to content
This repository was archived by the owner on Apr 26, 2019. It is now read-only.

Repository files navigation

node-printer

Code Climate

⚠️This package must only be used for prototyping

🚨 I said this package is not reliable! And MUST NOT be used in production

It relies on a CUPS STDOUT text parser and has not been tested for all version of CUPS! If you are looking for a way to manage and send data to printers take a look at alepee/node-ipp-interface which relies on IPP protocol and provide a more constistent way to communicate with a printer. (node-ipp-interface module is a WIP, please feel free to contribute)

Please note that the way I wrote this library as a prototype. It relies on STDOUT from CUPS binaries and is not trustable.

The correct way to manage printers and jobs would be to use IPP protocol defined by RFCs. You can have a look at alepee/node-ipp-interface, it is based on it but still isn't finished yet. I can give you some help if needed to complete it.

Further reading about IPP

  • RFC 2567 – Design Goals for an Internet Printing Protocol
  • RFC 2568 – Rationale for the Structure and Model and Protocol for the Internet Printing Protocol
  • RFC 2569 – Mapping between LPD and IPP Protocols
  • RFC 2910 – Internet Printing Protocol/1.1: Encoding and Transport
  • RFC 2911 – Internet Printing Protocol/1.1: Model and Semantics

A tool to print document or data. Based on "lp" binary STDOUT.
Supports complete set of lp options (http://unixhelp.ed.ac.uk/CGI/man-cgi?lp)

Based on armetiz/node-printer-lp and diegoalberto/node-printer-lp-complete.

Quick Examples

varPrinter=require('node-printer');varoptions={media: 'Custom.200x600mm',n: 3};// Get available printers listPrinter.list();// Create a new Pinter from available devicesvarprinter=newPrinter('EPSON_SX510');// Print from a buffer, file path or textvarfileBuffer=fs.readFileSync('/path/to/file.ext');varjobFromBuffer=printer.printBuffer(fileBuffer);varfilePath='package.json';varjobFromFile=printer.printFile(filePath);vartext='Print text directly, when needed: e.g. barcode printers'varjobFromText=printer.printText(text);// Cancel a jobjobFromFile.cancel();// Listen events from jobjobFromBuffer.once('sent',function(){jobFromBuffer.on('completed',function(){console.log('Job '+jobFromBuffer.identifier+'has been printed');jobFromBuffer.removeAllListeners();});});

Roadmap

  • Rewrite option factories
  • Remove dependency to underscorejs
  • Write more tests
  • Find a way to emulate CUPS printers on Travis env

About

No description, website, or topics provided.

Resources

Stars

31 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages