PAYATHON 2026

Electron 如何静默打印 4R 尺寸的 JPG 照片?

数据阿明

结论

你传入的 pageSize 已经对应 4 × 6 英寸。Electron 的 pageSize.width 和 pageSize.height 使用微米,101600 × 152400 微米正好换算为 4 × 6 英寸。如果打印结果仍是 A4,常见原因是打印机驱动不支持或未启用这个自定义纸型,打印时便回退到了默认纸张。

silent: true 会跳过打印对话框,但不会为打印机驱动创建或启用 4R 纸型。最终纸张尺寸仍取决于所选打印机及其驱动设置。

检查打印机的纸型设置

在操作系统的打印机设置中,为 printerName 对应的打印机启用或创建 4 × 6 英寸(4R)纸张,并确认应用程序可以使用该纸型。不同打印机驱动的设置界面和纸型名称可能不同。

静默打印时,用户无法通过打印对话框临时选择纸型。因此,驱动需要支持传入的自定义尺寸。如果驱动不支持,通常只调整网页中的 @page 无法解决问题。

保持 Electron 和页面尺寸一致

你当前的打印参数已经使用正确的微米值。保留这些设置,并确认选中的打印机名称正确:

win.webContents.print(
  {
    silent: true,
    printBackground: true,
    deviceName: printerName,
    margins: { marginType: "none" },
    pageSize: {
      width: 101600,  // 4 英寸,单位为微米
      height: 152400, // 6 英寸,单位为微米
    },
  },
  (success, errorType) => {
    if (!success) reject(new Error(errorType));
    else resolve();
  }
);

模板中的 @page、html、body 和图片也应采用纵向 4 × 6 英寸布局。你提供的模板已经设置了这些尺寸。object-fit: cover 会裁切图片以铺满页面;如果要保留完整照片,可以改为 object-fit: contain,但图片周围可能会出现留白。

定位只打印半页的原因

先用同一台打印机进行一次非静默打印,检查驱动是否实际选中了 4R 纸型。如果打印结果仍是 A4,问题更可能出在驱动支持或纸型配置上。如果纸型正确,但照片仍只占半页,再检查实际打印区域、边距和图片裁切方式。若打印机不支持无边距打印,marginType: "none" 也无法消除设备本身的不可打印区域。

确认驱动可以使用 4R 纸型后,再启用 silent: true 并测试固定配置。应用会传入纸张设置,由打印机驱动处理。

备注:内容仅供参考。