printer-pdf

June 15, 2026 · View on GitHub

printer-pdf 是一个 Node.js & electron 打印库,该库集成 node-java-caller 运行插件, 执行封装项目 printer-java 中的 jar 包实现的项目。

Version GitHub stars Downloads/week Downloads/total GitHub contributors License

轻量级跨平台 TypeScript 模块,可轻松地从 Node.js 代码调用获取打印机相关信息

Note

  • 如果系统中未获取到所需的 Java 版本,则自动安装
  • 系统是异步执行,所有方法均返回 Promise 对象。
  • macOS、Linux 平台(运行原理非Windows平台,按照Unix平台执行),必须安装[
`cpus`模块](https://openprinting.github.io/cups/index.html),否则会报错
  • 兼容 JDK 和 JRE 8(默认JRE 8) 到 21 版本
  • 支持 Windows、macOS、Linux 平台
  • 支持 Node.js 14 到 20+ 版本
  • 支持 打印 PDF 文件
  • 支持 获取打印机列表
  • 支持 设置打印参数
  • 支持 获取纸张大小列表

Installation

npm install printer-pdf --save   #npm安装依赖

yarn add printer-pdf            #yarn安装依赖

Usage Example

  • TypeScript 用法
import {
  getPaperSizeInfoAll,
  getPaperSizeInfo,
  getDefaultPrinter,
  print,
  getPrinters,
} from "printer-pdf";
  • JavaScript 用法
const {
    getPaperSizeInfoAll,
    getPaperSizeInfo,
    getDefaultPrinter,
    print,
    getPrinters,
} = require("printer-pdf");

PDF_PRINTER_OPTIONS

参数名类型描述
printerstring打印机名称(可选)
pdfstring文件路径(必填)
pagesstring打印页面范围(可选)
subsetSubset子集(可选)
orientationOrientationRequested打印机方向(可选)
scaleScaling缩放(可选)
monochromeChromaticity色彩打印(可选)
sideSides双面打印(可选)
binMediaTray墨盒类型(可选)
paperSizeMediaSizeName打印纸张(可选)
printDialogboolean是否弹窗打印(默认false)
copiesnumber打印份数(默认为1)

paperSizeInfoOptions

参数名类型描述
printerstring打印机名称(可选)

枚举类型

MediaSizeName(纸张大小)

枚举值描述
ISO_A0ISO A0
ISO_A1ISO A1
ISO_A2ISO A2
ISO_A3ISO A3
ISO_A4ISO A4(默认)
ISO_A5ISO A5
ISO_A6ISO A6
ISO_A7ISO A7
ISO_A8ISO A8
ISO_A9ISO A9
ISO_A10ISO A10
ISO_B0ISO B0
ISO_B1ISO B1
ISO_B2ISO B2
ISO_B3ISO B3
ISO_B4ISO B4
ISO_B5ISO B5
ISO_B6ISO B6
ISO_B7ISO B7
ISO_B8ISO B8
ISO_B9ISO B9
ISO_B10ISO B10
JIS_B0JIS B0
JIS_B1JIS B1
JIS_B2JIS B2
JIS_B3JIS B3
JIS_B4JIS B4
JIS_B5JIS B5
JIS_B6JIS B6
JIS_B7JIS B7
JIS_B8JIS B8
JIS_B9JIS B9
JIS_B10JIS B10
ISO_C0ISO C0
ISO_C1ISO C1
ISO_C2ISO C2
ISO_C3ISO C3
ISO_C4ISO C4
ISO_C5ISO C5
ISO_C6ISO C6
NA_LETTERNA Letter
NA_LEGALNA Legal
EXECUTIVEExecutive
LEDGERLedger
TABLOIDTabloid
INVOICEInvoice
FOLIOFolio
QUARTOQuarto
JAPANESE_POSTCARDJapanese Postcard
JAPANESE_DOUBLE_POSTCARDJapanese Double Postcard
AA
BB
CC
DD
EE
ISO_DESIGNATED_LONGISO Designated Long
ITALY_ENVELOPEItaly Envelope
MONARCH_ENVELOPEMonarch Envelope
PERSONAL_ENVELOPEPersonal Envelope
NA_NUMBER_9_ENVELOPENA Number 9 Envelope
NA_NUMBER_10_ENVELOPENA Number 10 Envelope
NA_NUMBER_11_ENVELOPENA Number 11 Envelope
NA_NUMBER_12_ENVELOPENA Number 12 Envelope
NA_NUMBER_14_ENVELOPENA Number 14 Envelope
NA_6X9_ENVELOPENA 6x9 Envelope
NA_7X9_ENVELOPENA 7x9 Envelope
NA_9X11_ENVELOPENA 9x11 Envelope
NA_9X12_ENVELOPENA 9x12 Envelope
NA_10X13_ENVELOPENA 10x13 Envelope
NA_10X14_ENVELOPENA 10x14 Envelope
NA_10X15_ENVELOPENA 10x15 Envelope
NA_5X7NA 5x7
NA_8X10NA 8x10

Chromaticity(设置色彩)

枚举值描述
MONOCHROME黑白(默认)
COLOR色彩

Sides(设置双面打印)

枚举值描述
ONE_SIDED单面(默认)
TWO_SIDED_LONG_EDGE双面长边
TWO_SIDED_SHORT_EDGE双面短边

MediaTray(墨盒类型)

枚举值描述
TOP顶部纸匣
MIDDLE中间纸匣
BOTTOM底部纸匣
ENVELOPE信封送纸器
MANUAL手动进纸托盘
LARGE_CAPACITY大容量进纸器
MAIN主纸匣 (默认)
SIDE侧边进纸托盘

OrientationRequested(设置打印机方向)

枚举值描述
PORTRAIT纵向: 纸张短边在上 (标准纵向)(默认)
LANDSCAPE横向: 纸张长边在上 (顺时针旋转 90 度)
REVERSE_LANDSCAPE反向横向: 逆时针旋转 90 度
REVERSE_PORTRAIT反向纵向: 旋转 180 度

Scaling(缩放)

枚举值描述
ACTUAL_SIZE实际大小
SHRINK_TO_FIT缩小以适应: 仅当 PDF 页面大于纸张时缩小,保持长宽比(默认)
STRETCH_TO_FIT拉伸以适应: 强制填满纸张,可能会导致图像拉伸变形
SCALE_TO_FIT缩放以适应: 无论大小,均缩放至完全符合纸张可打印区域

Subset(子集)

枚举值描述
ALL全部(默认)
ODD奇数(移除偶数)
EVEN偶数(移除奇数)

返回参数

Printer

参数名类型描述
deviceIDstring设备ID
printerNamestring打印机名称

PaperSizesInfoType

参数名类型描述
printerNamestring打印机名称
taskNumbernumber任务编号
statusnumber状态码
statusMsgstring状态信息
paperSizesPaperSizeType[]纸张尺寸列表

PaperSizeType

参数名类型描述
heightnumber纸张高度
kindnumber纸张ID
paperNamestring纸张名称
rawKindnumber原始类型ID
widthnumber纸张宽度