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 并测试固定配置。应用会传入纸张设置,由打印机驱动处理。
备注:内容仅供参考。
