A utility to print PDF files from Node.js and Electron.
- ✅ Works on Windows and Unix-like operating systems.
- ✅ Supports label printers such as Rollo and Zebra.
Install using yarn
:
yarn add pdf-to-printer
Or npm
:
npm install --save pdf-to-printer
Print a PDF file to the default printer:
import ptp from "pdf-to-printer";
ptp
.print("assets/pdf-sample.pdf")
.then(console.log)
.catch(console.error);
Arguments
pdf
(string
): PDF file to print. Will throw an error if no PDF specified. Note: It must be a path to a PDF existing in the file system. You may take a look at this example if you need to download your PDF file first.options
(Object
[optional]):options.printer
: (string
[optional]): Print to the specified printer. Will print to the default printer if name not specified. If the printer name mistyped or specified printer does not exist, nothing will print.options.unix
: (array
[optional]): Since we use lp to print documents on Unix-like operating systems you can pass any available in this list option.options.win32
: (array
[optional]): And since we use SumatraPDF to print documents on Windows you can pass any available in this list option.
Returns
Promise<void>
.
Examples
To print a PDF file to the default printer:
ptp
.print("assets/pdf-sample.pdf")
.then(console.log)
.catch(console.error);
To print to a specific printer, add the name of the printer to options:
const options = {
printer: "Zebra"
};
ptp
.print("assets/pdf-sample.pdf", options)
.then(console.log)
.catch(console.error);
To scale the PDF to fit into the printable area of the paper on both Windows and Unix operating systems:
const options = {
printer: "Zebra",
unix: ["-o fit-to-page"],
win32: ['-print-settings "fit"']
};
ptp
.print("assets/pdf-sample.pdf", options)
.then(console.log)
.catch(console.error);
Returns
Promise<string[]>
: List of available printers.
Examples
ptp
.getPrinters()
.then(console.log)
.catch(console.error);
Returns
Promise<string>
: Default printer.
Examples
ptp
.getDefaultPrinter()
.then(console.log)
.catch(console.error);
We have a few examples in the source code.
Please do not hesitate to report a bug or suggest an idea. You can do it here, or email me at artur.khusaenov at gmail dot com.