@luckykiet/node-printer
v1.0.3
Published
Node.js native printer bindings. Fork of @thiagoelg/node-printer with Node 24+ support.
Readme
@luckykiet/node-printer
Native printer bindings for Node.js on POSIX and Windows. Fork of @thiagoelg/node-printer with Node 24+ support.
What's different from the original?
- Node 24/25 support — C++20 build, updated V8 compatibility
- VS2026 compatibility — fixed C++ two-phase name lookup for MSVC 18+
- No Python dependency — build uses Node.js instead of Python for source file discovery
- Updated native dependencies (
nan2.25+,node-abi4.26+) - macOS arm64 (Apple Silicon) prebuild support
- Modernized GitHub Actions (v4, Node 24)
- Minimum Node version: 20.0.0
Install
npm install @luckykiet/node-printerBuild prerequisites
The native addon compiles from source if no prebuild is available.
macOS: Xcode Command Line Tools (ships with CUPS)
xcode-select --installLinux (Debian/Ubuntu):
sudo apt-get install libcups2-devWindows: Visual Studio Build Tools with C++ workload
API
const printer = require('@luckykiet/node-printer');| Method | Description |
|--------|-------------|
| getPrinters() | List all installed printers with jobs and statuses |
| getPrinter(name) | Get specific printer info |
| getDefaultPrinterName() | Get default printer name |
| getPrinterDriverOptions(name) | Get driver options (POSIX only) |
| getSelectedPaperSize(name) | Get default paper size (POSIX only) |
| printDirect(options) | Send raw data to printer |
| printFile(options) | Print a file (POSIX only) |
| getSupportedPrintFormats() | List supported formats (RAW, TEXT, PDF, etc.) |
| getJob(printerName, jobId) | Get job info |
| setJob(printerName, jobId, command) | Send command to job (e.g. CANCEL) |
| getSupportedJobCommands() | List supported job commands |
Examples
const printer = require('@luckykiet/node-printer');
// List printers
console.log(printer.getPrinters());
// Print raw text
printer.printDirect({
data: 'Hello from Node.js!',
printer: printer.getDefaultPrinterName(),
type: 'TEXT',
success: (jobId) => console.log('Job ID:', jobId),
error: (err) => console.error(err),
});See the examples directory for more usage patterns.
Credits
- Ion Lupascu — original author (tojocky/node-printer)
- Thiago Lugli (@thiagoelg) — Node 12+ support & prebuild CI
- Eko Eryanto (@ekoeryanto) — prebuild integration
