From 1e0822c1a0130ea0fc829a2f2d3db71eba77ad6a Mon Sep 17 00:00:00 2001 From: yuchenglong Date: Thu, 4 Dec 2025 11:34:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=90=8D=E7=A7=B0=E5=92=8C?= =?UTF-8?q?=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/main.js | 74 ++++++++++++++++++++++++++++++--------------- index.html | 2 +- package.json | 3 +- resources/icon.ico | Bin 0 -> 28513 bytes 4 files changed, 52 insertions(+), 27 deletions(-) create mode 100644 resources/icon.ico diff --git a/electron/main.js b/electron/main.js index d8eb82f..59f050d 100644 --- a/electron/main.js +++ b/electron/main.js @@ -64,6 +64,7 @@ function createWindow() { height: 1920, fullscreen: true, // 全屏 frame: false, // 无边框 + icon: path.join(__dirname, "../resources/icon.ico"), // 设置窗口图标 webPreferences: { preload: path.join(__dirname, "preload.js"), nodeIntegration: false, @@ -195,15 +196,22 @@ ipcMain.handle("print-pdf", async (event, pdfDataOrUrl, printOptions = {}) => { } // 创建临时文件 - tempFilePath = path.join(os.tmpdir(), `print_${Date.now()}_${Math.random().toString(36).substring(7)}.pdf`); + tempFilePath = path.join( + os.tmpdir(), + `print_${Date.now()}_${Math.random().toString(36).substring(7)}.pdf` + ); fs.writeFileSync(tempFilePath, buffer); pdfFilePath = tempFilePath; const fileSize = fs.statSync(tempFilePath).size; - log.info(`PDF written to temp file: ${tempFilePath}, size: ${fileSize} bytes`); + log.info( + `PDF written to temp file: ${tempFilePath}, size: ${fileSize} bytes` + ); if (fileSize < 1024) { - throw new Error(`PDF文件大小异常(${fileSize} bytes),可能数据不完整`); + throw new Error( + `PDF文件大小异常(${fileSize} bytes),可能数据不完整` + ); } } catch (err) { log.error("Base64解码或文件写入失败:", err); @@ -211,32 +219,39 @@ ipcMain.handle("print-pdf", async (event, pdfDataOrUrl, printOptions = {}) => { } } // 如果是HTTP/HTTPS URL,先下载 - else if (pdfDataOrUrl.startsWith("http://") || pdfDataOrUrl.startsWith("https://")) { + else if ( + pdfDataOrUrl.startsWith("http://") || + pdfDataOrUrl.startsWith("https://") + ) { log.info("Downloading PDF from URL:", pdfDataOrUrl); const protocol = pdfDataOrUrl.startsWith("https") ? https : http; const buffer = await new Promise((resolve, reject) => { - protocol.get(pdfDataOrUrl, (response) => { - // 处理重定向 - if (response.statusCode === 301 || response.statusCode === 302) { - const redirectUrl = response.headers.location; - protocol.get(redirectUrl, (redirectResponse) => { + protocol + .get(pdfDataOrUrl, (response) => { + // 处理重定向 + if (response.statusCode === 301 || response.statusCode === 302) { + const redirectUrl = response.headers.location; + protocol + .get(redirectUrl, (redirectResponse) => { + const chunks = []; + redirectResponse.on("data", (chunk) => chunks.push(chunk)); + redirectResponse.on("end", () => { + resolve(Buffer.concat(chunks)); + }); + redirectResponse.on("error", reject); + }) + .on("error", reject); + } else { const chunks = []; - redirectResponse.on("data", (chunk) => chunks.push(chunk)); - redirectResponse.on("end", () => { + response.on("data", (chunk) => chunks.push(chunk)); + response.on("end", () => { resolve(Buffer.concat(chunks)); }); - redirectResponse.on("error", reject); - }).on("error", reject); - } else { - const chunks = []; - response.on("data", (chunk) => chunks.push(chunk)); - response.on("end", () => { - resolve(Buffer.concat(chunks)); - }); - response.on("error", reject); - } - }).on("error", reject); + response.on("error", reject); + } + }) + .on("error", reject); }); // 验证PDF文件头 @@ -244,12 +259,17 @@ ipcMain.handle("print-pdf", async (event, pdfDataOrUrl, printOptions = {}) => { throw new Error("下载的文件不是有效的PDF"); } - tempFilePath = path.join(os.tmpdir(), `print_${Date.now()}_${Math.random().toString(36).substring(7)}.pdf`); + tempFilePath = path.join( + os.tmpdir(), + `print_${Date.now()}_${Math.random().toString(36).substring(7)}.pdf` + ); fs.writeFileSync(tempFilePath, buffer); pdfFilePath = tempFilePath; const fileSize = fs.statSync(tempFilePath).size; - log.info(`PDF downloaded to temp file: ${tempFilePath}, size: ${fileSize} bytes`); + log.info( + `PDF downloaded to temp file: ${tempFilePath}, size: ${fileSize} bytes` + ); } // 如果是本地文件路径 else if (pdfDataOrUrl.startsWith("file://")) { @@ -280,7 +300,11 @@ ipcMain.handle("print-pdf", async (event, pdfDataOrUrl, printOptions = {}) => { throw new Error(`PDF文件大小异常(${stats.size} bytes),可能文件损坏`); } - log.info(`准备打印PDF: ${pdfFilePath}, 打印机: ${targetPrinterName || "默认打印机"}`); + log.info( + `准备打印PDF: ${pdfFilePath}, 打印机: ${ + targetPrinterName || "默认打印机" + }` + ); // 使用 pdf-to-printer 打印 const printOptions_ptp = { diff --git a/index.html b/index.html index 1363056..638e875 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ - Electron + React App + 自助签到
diff --git a/package.json b/package.json index 488f580..6f24d4a 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ }, "build": { "appId": "com.yuanhe.checkin", - "productName": "YuanheCheckin", + "productName": "自助签到", "directories": { "output": "release" }, @@ -55,6 +55,7 @@ } ], "win": { + "icon": "resources/icon.ico", "target": [ "nsis", "portable" diff --git a/resources/icon.ico b/resources/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..12b44287491d0114d38f0e884c683d0be41748ce GIT binary patch literal 28513 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 EYDdUIlH@081gdKK8s4~= z+l$yHG0y$Dov1mcIJ-A+gFzb97+6%j*D~+isp>tptA;`Iom8wm`5P(W^mEw_ zLv4M0X`^9|CM5#Nf+9F46v7(Z1F?TbAgmIQh!Y4bfMunDiekmCE%C#*%}PUT0m^}A zwh@gU441>)(ylWb!A21-#HDFsrVqk_CJ`5*cJYSf7iWumE}9-sc5OK}NDmUPj&7X@ zVNiq*RC8Z&OeQ>saEcL zAAtSAcMx~tTdtMB#6eq3l>7^Jfebg-K0LjEJA9c~_rs&2>o#%V+!#VDvS2zs z_p{tLTu;F-lpMj1%u$&0^kY&coHo05{+Rf>B0rMYt5x31>#5HxpQ2o1U{HQ%%lSx; zg?D7FJ(*z8cM|-JVjmoIa&QGHQZoaLJz_6^k{>|cJ!R0x_^t4+PXI?NxhcY=G3;7! zoC<^7|E!Q3@kQsSTFDG=F1p&wiTjo7NfmUUexUBkmgZDP!|Gd6a0OU9^XsOM%CFmmKnEcF z{^BOcz{E^QnEPv&g=cfzG5&wh*GUBl$Yaj>K$7XDcQ`}Z1Ewa}u?(y!0k0Tir4-~6hx~!YGv)W2eku$)I#6MS}v$Rs`98~{?1zrp@7J0qO5|GTSvo^O` zf5{L%-y(ac)?05G6DJA8KC~Pbn7C{LlBY+wbDW37;BHrYt+>rp*RpNvA+TiZP+BE6 z{Jd!W9{R~6sfr2chbSe}>yrf5gey4q2~+`VeBz!${S{6ko|o}w^9O7<^Tfu;U=@c2 z-oZ=~nFfMMqwGutWuL1K<<=MDM>W?$#Qz^{$&_fa##BmE7vCQVB)HMvaU|sZG0S7h z)h$&~Jkno$f*Ju}=!W^32qlAuTJ5Ul>2ETv_WRUwM%y2>|I+uq43dgV5RL&fiOF90SmTk8r-OkBTAmcx3}BJ9(#)H| z*AW{fNxTn7Q%sJ!52k3UEo^JpJIz^4#q7^0jDfra!8STZCO3R1T4bw0Ur`W;?U zBk{p^iiE%h+lX4}IwHHb&F)YU-(a;k`##$4vPv!Eql3AhGDLgvLP9_`+O0;_qgHiB zlFg!)^M@Bt6%LWtj+@dCale#0tcvRzz*Zt+V+$Q}@{WEn zLE4)nw0O29$Yy6x`sEj5nxN73$Ji9BRqT8<(SL2}FSRin4@bTfJfDByE{4zk&>+=J zdzLKpr#^F3TvQ5)1c0-rT)dT*$W74!B5STGZ};n^YBg%-BNymBiXTmj*H<-V34PAdE-{SZprSbE3|5F7C;LdZPQvyjm_A~- zTU2ydTTJ#9yqW{@kgT~g zgRg|wXnfBW?1x6de-u>Ka-c0-CPeaYubu zQocO4CTEIAUx&M9vEllmMR;D6UXn7^^&m)FMdY72jOZ~>eM`|b4rmY;Kd_V&mlqok z9HoL;R^5QNA&5IILR-T(=s-mhN)rsy)cKl^k}hi{9}JS(LIe9?5bJgmLlhX)ObAhj zvpXqviz&Ue&seagmdU%4Iac)5RW$$a<1H#;Fx+d+$=C7>i<$$^T__PQ=X<%bkJ!l_ z3jYIqxlou=Q4k$Vn6P9H_*@XsqWw~?yF^xGqJ@fzZ|Df)Y(b$val?eZ^$BDXGvn!k zwD~45-_4B?*Y_20aX7KBHCn1Qk2<3Z1cKs_5C5_Af_RAr#!pm>t}w(Wmapc-U+#2a zJ;3R~i4p<9k06jDPTby!$p~yf9qX=I91EW*IxvokC( zM;jqBHYc5a7YXLHzw}I_ug8M6-a)QG*3oSRuW8=>{~HSkaXCov{}YD24`tsouy_pNm)`sBE81$ z%7@VBkNnXVPU#^+^%VI