Giter Club home page Giter Club logo

node-printer's Introduction

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

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

node-printer's People

Contributors

alepee avatar armetiz avatar diegoalberto83 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.