diff --git a/assets/set.html b/assets/set.html
index b59c7a43b4f7d3f4641e55943ca78a11512781f4..41ad80d63cfddaf0861e0870657129aa41a6a110 100644
--- a/assets/set.html
+++ b/assets/set.html
@@ -176,6 +176,7 @@
closeType: "tray",
logPath: "",
pdfPath: "",
+ defaultPrinter:""
},
// 预制的版本,解决部分内网无法获取新版本的问题
versions: [
@@ -197,6 +198,7 @@
},
],
downloadedVersions: [], // 存储已下载版本
+ printerList:[] // 打印机列表
};
},
computed: {
@@ -446,6 +448,17 @@
span: 12,
display: this.setTab === "advancedSet",
},
+ {
+ label: "默认打印机",
+ prop: "defaultPrinter",
+ is: "el-select",
+ optionIs: "el-option",
+ attrs: {
+ clearable:true,
+ },
+ options: this.printerList,
+ display: this.setTab === "advancedSet",
+ },
{
label: "允许通知",
prop: "allowNotify",
@@ -497,6 +510,10 @@
// 获取配置
this.formData = store.store;
this.getVersions();
+ this.getPrintersList();
+ ipcRenderer.on("getPrintersList", (event, printers) => {
+ this.printerList = printers; // 更新打印机列表
+ });
},
mounted() {
this.handleTabChange();
@@ -613,6 +630,13 @@
};
xhr.send();
},
+ /**
+ * @description: 获取打印机列表
+ * @return {void}
+ */
+ getPrintersList() {
+ ipcRenderer.send("getPrintersList"); // 请求打印机列表
+ }
},
});
diff --git a/src/print.js b/src/print.js
index 3d7aaefcc00d9f558b823bb3572a06f3cb831d1c..747d94a7779e65ccf0aeeb98dc84d366297b76b9 100644
--- a/src/print.js
+++ b/src/print.js
@@ -82,6 +82,10 @@ function initPrintEvent() {
defaultPrinter = element.name;
}
});
+ const storeDefaultPrinter = store.get("defaultPrinter"); // 获取store是否设置有保存打印机
+ if (storeDefaultPrinter !== '' && !havePrinter) {
+ defaultPrinter = storeDefaultPrinter;
+ }
if (printerError) {
log(
`${data.replyId ? "中转服务" : "插件端"} ${socket.id} 模板 【${
diff --git a/src/set.js b/src/set.js
index f86f75566ee416e5ee37054478c58e2120024290..ade11a89db4a1c4254902b16b4ee591dfc4030a9 100644
--- a/src/set.js
+++ b/src/set.js
@@ -298,6 +298,7 @@ function initSetEvent() {
ipcMain.on("testTransit", testTransit);
ipcMain.on("closeSetWindow", closeSetWindow);
ipcMain.on("downloadPlugin", downloadPlugin);
+ ipcMain.on("getPrintersList", getPrintersList);
}
/**
@@ -313,6 +314,7 @@ function removeEvent() {
ipcMain.removeListener("testTransit", testTransit);
ipcMain.removeListener("closeSetWindow", closeSetWindow);
ipcMain.removeListener("downloadPlugin", downloadPlugin);
+ ipcMain.removeListener("getPrintersList", getPrintersList);
SET_WINDOW = null;
}
@@ -330,6 +332,24 @@ function getDownloadedVersions() {
.map((file) => file.split("_")[0]); // 提取版本号
}
+/**
+ * @description: 获取打印机列表并发送给渲染进程
+ * @param {IpcMainEvent} event
+ * @return {void}
+ */
+async function getPrintersList(event) {
+ try {
+ const printers = await SET_WINDOW.webContents.getPrintersAsync();
+ let list = printers.map(item => {
+ return { value: item.name };
+ })
+ SET_WINDOW.webContents.send("getPrintersList", list);
+ } catch (error) {
+ console.error('获取打印机列表失败:', error);
+ SET_WINDOW.webContents.send("getPrintersList", []);
+ }
+}
+
module.exports = async () => {
// 创建设置窗口
await createSetWindow();
diff --git a/tools/utils.js b/tools/utils.js
index 00578b5efc63a259f58f7b50db91ba1d557bbb98..011c89747f88e5375ac75175e2ee55fe869b606a 100644
--- a/tools/utils.js
+++ b/tools/utils.js
@@ -65,6 +65,10 @@ const schema = {
type: "string",
default: app.getPath("temp"),
},
+ defaultPrinter: {
+ type: "string",
+ default: '',
+ }
};
const store = new Store({ schema });