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 device id not specified. If the printer device id 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<JobId>
: A promise that resolves with string jobId (only unix).
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 device id 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<Printer[]>
: List of available printers.
Examples
ptp
.getPrinters()
.then(console.log)
.catch(console.error);
Returns
Promise<Printer> | false
: Default printer or false
if there is no default printer.
Examples
ptp
.getDefaultPrinter()
.then(console.log)
.catch(console.error);
This method implemented only for unix yet.
Arguments
jobId
(string
): Printing job id returned by the methodprint
.timeout
(number
): How log should we wait the result.polingDelay
(number
): How often should we poll the result.options
(Object
[optional]):options.printer
: (string
[optional]): Specifies the destination printer.options.username
: (string
[optional]): Specifies an alternate username.options.hostname
: (string
[optional]): Specifies an alternate server.options.unix
: (array
[optional]): Since we use lpq to cancel jobs on Unix-like operating systems you can pass any available in this list option.
Returns
Promise<String>
: A promise that resolves with the value "complete" if the print job has disappeared from the queue
or "outdated" if the timeout has expired.
Examples
ptp
.observe('354', 60000, 1000)
.then(console.log)
.catch(console.error);
Cancels the specific printing job or all jobs. This method implemented only for unix yet.
Arguments
jobId
(string
): Printing job id. To clear a whole queue you should pass-
.options
(Object
[optional]):options.printer
: (string
[optional]): Specifies the destination printer.options.username
: (string
[optional]): Specifies an alternate username.options.hostname
: (string
[optional]): Specifies an alternate server.options.unix
: (array
[optional]): Since we use lprm to observe jobs on Unix-like operating systems you can pass any available in this list option.
Returns
Promise<void>
.
Examples
ptp
.cancel(jobId)
.then(console.log)
.catch(console.error);
// cancel all jobs
ptp
.cancel('-')
.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.
If you rely on this package please consider supporting it https://www.buymeacoffee.com/artiebits. I would appreciate it.