https://github.com/artiebits/pdf-to-printer
Print PDFs and images from Node.js and Electron
https://github.com/artiebits/pdf-to-printer
electron jpeg nodejs pdf pdf-printer png printer rollo-printer silent-printing windows zebra-printer
Last synced: about 2 months ago
JSON representation
Print PDFs and images from Node.js and Electron
- Host: GitHub
- URL: https://github.com/artiebits/pdf-to-printer
- Owner: artiebits
- License: mit
- Created: 2019-07-13T18:20:35.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2026-02-07T08:06:18.000Z (2 months ago)
- Last Synced: 2026-02-07T17:55:53.022Z (2 months ago)
- Topics: electron, jpeg, nodejs, pdf, pdf-printer, png, printer, rollo-printer, silent-printing, windows, zebra-printer
- Language: TypeScript
- Homepage: https://artiebits.com
- Size: 32.9 MB
- Stars: 479
- Watchers: 7
- Forks: 149
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# PDF to Printer
[](https://codecov.io/gh/artiebits/pdf-to-printer)

A powerful Node.js and Electron utility for printing PDFs and images to Windows printers.
## Features
- **Print PDFs and images** to any Windows printer
- **Precise control** over printing options (pages, orientation, paper size, etc.)
- **Label printer support** (Rollo, Zebra, and more)
- **Printer discovery** - list all available printers
- **Fast and reliable** using SumatraPDF engine
- **TypeScript support** with full type definitions
- **Windows only** - for Unix-like systems, see [unix-print](https://github.com/artiebits/unix-print)
## Installation
```bash
npm install pdf-to-printer
# or
yarn add pdf-to-printer
```
## Quick Start
```typescript
import { print, getPrinters, getDefaultPrinter } from "pdf-to-printer";
// Print to default printer
await print("document.pdf");
// Print with options
await print("document.pdf", {
printer: "HP LaserJet",
pages: "1-3",
copies: 2,
paperSize: "A4",
});
// List available printers
const printers = await getPrinters();
console.log(printers);
// Get default printer
const defaultPrinter = await getDefaultPrinter();
console.log(defaultPrinter?.name);
```
## Support This Project
If you rely on this package, please consider supporting it. Maintaining an open source project takes time and your support would be greatly appreciated.
## API Reference
### `print(pdf, options?)`
Prints a PDF file to a printer.
**Parameters:**
- `pdf` (string): Path to the PDF file to print
- `options` (PrintOptions, optional): Printing configuration options
**Returns:** `Promise`
**Throws:** `Error` if the PDF file doesn't exist, the operating system is not supported, or printing fails
#### PrintOptions
| Option | Type | Description |
| ---------------- | -------------------------------------------------------- | ------------------------------------------------------------ |
| `printer` | `string` | Name of the printer to use (default: system default printer) |
| `pages` | `string` | Pages to print (e.g., "1-3,5" or "1,3,5") |
| `subset` | `string` | Print only odd or even pages (valid: "odd", "even") |
| `orientation` | `string` | Page orientation (valid: "portrait", "landscape") |
| `scale` | `string` | Content scaling (valid: "noscale", "shrink", "fit") |
| `monochrome` | `boolean` | Print in black and white |
| `side` | `string` | Duplex printing (valid: "duplex", "duplexshort", "duplexlong", "simplex") |
| `bin` | `string` | Paper tray/bin to use (number or name) |
| `paperSize` | `string` | Paper size (e.g., "A4", "letter", "legal") |
| `silent` | `boolean` | Suppress error messages |
| `printDialog` | `boolean` | Show print dialog instead of printing directly |
| `sumatraPdfPath` | `string` | Custom path to SumatraPDF executable |
| `copies` | `number` | Number of copies to print (default: 1) |
| `paperkind` | `number` | Allow to choose custom paper size by kind |
### `getPrinters()`
Gets a list of all available printers on the system.
**Returns:** `Promise`
**Throws:** `Error` if the operating system is not supported or if the command fails
**Example:**
```typescript
import { getPrinters } from "pdf-to-printer";
const printers = await getPrinters();
console.log(printers);
// [
// { deviceId: "HP_LaserJet", name: "HP LaserJet Pro", paperSizes: ["A4", "Letter"] },
// { deviceId: "Canon_Pixma", name: "Canon PIXMA", paperSizes: ["A4", "A3"] }
// ]
```
### `getDefaultPrinter()`
Gets the default printer information.
**Returns:** `Promise`
**Throws:** `Error` if the operating system is not supported or if the command fails
**Example:**
```typescript
import { getDefaultPrinter } from "pdf-to-printer";
const defaultPrinter = await getDefaultPrinter();
if (defaultPrinter) {
console.log(`Default printer: ${defaultPrinter.name}`);
console.log(`Device ID: ${defaultPrinter.deviceId}`);
console.log(`Paper sizes: ${defaultPrinter.paperSizes.join(", ")}`);
} else {
console.log("No default printer set");
}
```
### `Printer` Type
```typescript
type Printer = {
deviceId: string; // Unique identifier for the printer device
name: string; // Human-readable name of the printer
paperSizes: string[]; // Array of supported paper sizes
};
```
## License
[MIT](LICENSE)
