Skip to content

bitinflow/print-utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Print Utils

Description

This is a Sendcloud compatible Print Client which runs on Windows, Linux and Mac. Its goal is providing a simple and easy to use interface to print documents from any application to a printer connected to the computer.

Installation

Clone the repository

git clone http://github.com/bitinflow/print-utils.git

Install dependencies

npm install

Install pm2

npm install pm2 -g

Set home for windows

Follow these steps:

  1. Create a new folder c:\etc\.pm2
  2. Create a new PM2_HOME variable (at System level, not User level) and set the value c:\etc\.pm2
  3. Close all your open terminal windows (or restart Windows)
  4. Ensure that your PM2_HOME has been set properly, running echo %PM2_HOME%

Start the server

Start and add a process to the pm2 process list:

pm2 start index.js --name print-utils

Stop, start and restart a process from the process list:

pm2 stop print-utils
pm2 start print-utils
pm2 restart print-utils

Usage

List Printers

Request:

curl --location 'http://127.0.0.1:1903/printers'

Response:

The default property is currently always false because the default printer is not yet supported.

[
  {
    "default": false,
    "format": "PDF",
    "id": "PM-241-BT (Network)",
    "name": "PM-241-BT (Network)"
  }
]

Print a PDF

Request:

curl --location 'http://127.0.0.1:1903/printers/PM-241-BT%20(Network)/print' \
--form 'file=@"label.pdf"' \
--form 'copies="1"'

Successful Response:

On windows the response does not return any real job id. Instead, it returns a 0.

{
  "jobs": [
    "1"
  ]
}

Error Responses:

If the request is not successful, the response will contain an error message and an error id.

{
  "error": "Missing PDF file",
  "error_id": "missing_pdf"
}

Here is a list of possible error ids (but not all of them are implemented yet):

Error ID Description
missing_pdf Missing PDF file
invalid_label Invalid label format
null Unsuccessful print job: {...}