⚠️ This package should only be used for prototyping
It relies on 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 RFC 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
var Printer = require('node-printer'); var options = { media: 'Custom.200x600mm', n: 3 }; // Get available printers list Printer.list(); // Create a new Pinter from available devices var printer = new Printer('EPSON_SX510'); // Print from a buffer, file path or text var fileBuffer = fs.readFileSync('/path/to/file.ext'); var jobFromBuffer = printer.printBuffer(fileBuffer); var filePath = 'package.json'; var jobFromFile = printer.printFile(filePath); var text = 'Print text directly, when needed: e.g. barcode printers' var jobFromText = printer.printText(text); // Cancel a job jobFromFile.cancel(); // Listen events from job jobFromBuffer.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