npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-printer-scanner

v0.1.1

Published

This node gives you the ability to print via a CUPS server and scan via SANE.

Readme

n8n-nodes-printer

Banner image

This community node package for n8n provides two nodes for interacting with physical hardware from your workflows:

  • Printer — Send files to a printer via a CUPS server
  • Scanner — Scan documents to PDF using a SANE-compatible scanner

Installation

Step 1 — Install the package in n8n

n8n has a built-in way to install community packages:

  1. Open your n8n instance and go to Settings (bottom-left gear icon)
  2. Click Community Nodes
  3. Click Install a community node
  4. Enter the package name: n8n-nodes-printer-scanner
  5. Tick the checkbox to confirm you understand community nodes are not verified by n8n
  6. Click Install

The Printer and Scanner nodes will now appear in the node palette when you search for them.

Note: If your n8n instance doesn't show the Community Nodes option, it may have been disabled by an administrator, or you may be on n8n Cloud's free tier. Self-hosted instances have it enabled by default.

Step 2 — Install system dependencies

These nodes call command-line tools that must be available in the environment where n8n is running. Which tools you need depends on which nodes you want to use:

| Node | Requires | Package to install | |---|---|---| | Printer | lp command | cups-client | | Scanner | scanimage command | sane-utils |

If you're running n8n with Docker (most common)

You'll need a custom Dockerfile that installs the required packages. Here's one that covers both nodes:

FROM n8nio/n8n

USER root
RUN apk add --no-cache cups-client sane-utils
USER node

Alpine vs Debian: The official n8n Docker image is Alpine-based, so use apk. If you're using a custom Debian/Ubuntu-based image, use apt-get install -y cups-client sane-utils instead.

If you only use the Printer node and not the Scanner (or vice versa), you can install just the package you need.

If you're running n8n directly on Linux

Install the packages with your system's package manager. On Debian/Ubuntu:

sudo apt-get install cups-client sane-utils

On Alpine:

apk add cups-client sane-utils

After installing, restart n8n.


Printer Node

What you need

A CUPS print server running somewhere on your network and reachable from the machine running n8n. CUPS runs on Linux and macOS and manages one or more printers.

Usage

  1. CUPS Server IP — The IP address of your CUPS server (e.g., 192.168.1.100)
  2. Select Printer — Click the field to auto-discover printers on your server, or type the queue name manually
  3. Binary Property — The name of the binary field in the incoming data that holds the file to print (usually data)
  4. Options (all optional):
    • Quantity — Number of copies
    • Page Range — Which pages to print, e.g. 1-5, 8
    • Advanced CUPS Options — A JSON object of extra CUPS flags for full control (see below)

Advanced CUPS Options example

To print A4, landscape, double-sided:

{
  "media": "A4",
  "orientation-requested": "4",
  "sides": "two-sided-long-edge"
}

Troubleshooting: 'The printer or class does not exist'

This usually means the CUPS client can't resolve the printer's hostname. Fix it by telling the client the server's IP address directly. Add this to your Dockerfile:

RUN echo "ServerName 192.168.1.100" >> /etc/cups/client.conf

Replace 192.168.1.100 with your actual CUPS server IP.


Scanner Node

What you need

A scanner supported by SANE (Scanner Access Now Easy) and accessible from the machine running n8n — either via USB or over the network. Many Canon, Epson, HP, and Brother multifunction printers work out of the box with SANE.

To check if your scanner is supported, look it up in the SANE device list.

Usage

  1. Scanner Device — Click the field to auto-discover scanners, or type the device name manually (e.g., pixma:MX920_192.168.1.5 or bjnp://192.168.1.5)
  2. Output Binary Property — The name to give the scanned PDF in the output data (default: data). Downstream nodes can read the PDF from this field.
  3. Options (all optional):
    • Resolution — Scan quality in DPI. 150 is fine for reading text, 300 is good general-purpose quality, 600 is high quality (and a much larger file). Default: 300.
    • Scan ModeColor, Gray (greyscale), or Lineart (black and white only). Default: Color.
    • SourceFlatbed (place the page on the glass) or ADF (Automatic Document Feeder, for scanning a stack of pages). Default: Flatbed.

The node outputs the scanned document as a PDF binary. You can then pass it to other nodes — for example, save it to disk, upload it to cloud storage, or send it by email.

Finding your scanner's device name

If auto-discovery doesn't work (e.g., n8n is running in Docker and can't see the scanner directly), you can find the device name by running this on the host machine where the scanner is connected:

scanimage -L

This will print something like:

device `pixma:MX920_192.168.1.5' is a CANON Canon PIXMA MX920 multi-function peripheral

The part between the backtick and the single quote — pixma:MX920_192.168.1.5 — is what you paste into the Scanner Device field using the manual Name mode.

Scanning over the network from Docker

If your scanner is attached to a different machine on your network (e.g., a Raspberry Pi running saned), you can point SANE at it by setting the SANE_NET_HOSTS environment variable when starting your n8n container:

docker run -e SANE_NET_HOSTS=192.168.1.50 ... n8nio/n8n

Then use net:192.168.1.50:pixma:MX920_... as the device name, or let auto-discovery find it.


License

MIT