Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
electron-printer
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhuzhequan
electron-printer
Commits
2edfa954
Commit
2edfa954
authored
Sep 28, 2025
by
linjinhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix:修改下载文件方法
parent
a6c2149b
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
162 additions
and
62 deletions
+162
-62
logs/2025-09-28/print.json
+2
-0
src/server/utils/index.js
+159
-57
src/server/utils/setImage.js
+1
-5
No files found.
logs/2025-09-28/print.json
0 → 100644
View file @
2edfa954
[{
"head_setting"
:{
"gridShow"
:
1
,
"gridValue"
:
0
,
"unit"
:
"inch"
,
"language"
:
"cn"
,
"autoPrint"
:
false
,
"gridSpacing"
:
1
},
"version"
:
"1.0.22"
,
"print_setting"
:{
"printer"
:
""
,
"xy"
:
""
,
"byInk"
:
2
,
"byInkVolume"
:
1
,
"byDoublePrint"
:
3
,
"bEcoMode"
:
false
,
"bMaterialBlack"
:
false
,
"byHighlight"
:
5
,
"printNum"
:
1
,
"bFastMode"
:
false
,
"bUniPrint"
:
false
,
"bDivide"
:
false
,
"bPause"
:
false
,
"byMask"
:
3
,
"bTransColor"
:
false
,
"byChoke"
:
2
,
"minWhiteInkType"
:
0
,
"bySaturation"
:
5
,
"byBrightness"
:
5
,
"byContrast"
:
5
,
"iCyanBalance"
:
0
,
"iMagentaBalance"
:
0
,
"iBlackBalance"
:
0
,
"iYellowBalance"
:
0
,
"byMinWhite"
:
1
,
"bMultiple"
:
false
},
"production_no"
:
"GCPSC2509272339"
,
"print_time"
:
"2025-09-28 09:52:21"
,
"position_unit"
:{
"x"
:
408.8
,
"rate"
:
1.396341463414634
,
"sx"
:
0
,
"zIndex"
:
0
,
"sh"
:
0
,
"sw"
:
0
,
"sy"
:
0
,
"y"
:
458.6
,
"w"
:
594.4
,
"h"
:
826.7
,
"r"
:
0
},
"position_after_px"
:{
"x"
:
"1.1"
,
"rate"
:
1.2256385998107853
,
"sx"
:
0
,
"zIndex"
:
0
,
"sh"
:
0
,
"sw"
:
0
,
"sy"
:
0
,
"y"
:
"0.0"
,
"w"
:
"24.8"
,
"h"
:
"30.4"
,
"r"
:
0
},
"position_before_px"
:{
"url"
:
"D:
\\
work
\\
electron-printer
\\
print4.0
\\
Input
\\
884a8758-064b-4115-b053-bb24e13adddd.png"
,
"fileName"
:
"884a8758-064b-4115-b053-bb24e13adddd.png"
,
"rate"
:
1.2256385998107853
,
"w"
:
748.9972983404092
,
"zIndex"
:
0
,
"x"
:
34.5013508297954
,
"y"
:
1
,
"h"
:
918
,
"r"
:
0
},
"send_api_data"
:{
"printer"
:
""
,
"xy"
:
""
,
"byInk"
:
2
,
"byInkVolume"
:
1
,
"byDoublePrint"
:
3
,
"bEcoMode"
:
false
,
"bMaterialBlack"
:
false
,
"byHighlight"
:
5
,
"printNum"
:
1
,
"bFastMode"
:
false
,
"bUniPrint"
:
false
,
"bDivide"
:
false
,
"bPause"
:
false
,
"byMask"
:
3
,
"bTransColor"
:
false
,
"byChoke"
:
2
,
"minWhiteInkType"
:
0
,
"bySaturation"
:
5
,
"byBrightness"
:
5
,
"byContrast"
:
5
,
"iCyanBalance"
:
0
,
"iMagentaBalance"
:
0
,
"iBlackBalance"
:
0
,
"iYellowBalance"
:
0
,
"byMinWhite"
:
1
,
"bMultiple"
:
false
,
"byPlatenSize"
:
1
,
"cmd"
:
"GTXproCMD.exe print -X
\"
Profile
\\
884a8758-064b-4115-b053-bb24e13adddd.xml
\"
-I
\"
Input
\\
884a8758-064b-4115-b053-bb24e13adddd.png
\"
-A
\"
Output
\\
884a8758-064b-4115-b053-bb24e13adddd.arxp
\"
-S 37094546 -L 01760010 -D 0 -W 1"
,
"fileName"
:
"884a8758-064b-4115-b053-bb24e13adddd.png"
,
"print_cmd"
:
"GTXproCMD.exe send -A
\"
Output
\\
884a8758-064b-4115-b053-bb24e13adddd.arxp
\"
-P
\"
Brother GTX-6 FileOutput"
}}]
\ No newline at end of file
src/server/utils/index.js
View file @
2edfa954
...
...
@@ -5,7 +5,7 @@ var path = require("path");
var
request
=
require
(
"request"
);
var
uuid
=
require
(
"uuid"
);
const
compressing
=
require
(
"compressing"
);
import
{
createWriteStream
}
from
"fs"
;
const
{
getVersion
}
=
require
(
"@/server/utils/store"
);
function
getCurrentVersion
()
{
...
...
@@ -53,26 +53,112 @@ function zip(from, to) {
});
}
// 下载素材
// // 下载素材
// export const downloadImage = (list) => {
// return new Promise((resolve, reject) => {
// try {
// // console.log("Formatted Folder Name:", folderName); // 检查替换结果
// let dirPath = path.join(process.cwd(), `./${getCurrentVersion()}/Input/`);
// console.log(62, dirPath);
// console.log("list", list);
// if (!fs.existsSync(dirPath)) {
// fs.mkdirSync(dirPath);
// }
// let count = 0;
// for (let i = 0; i < list.length; i++) {
// if (list[i].url && list[i].url.includes("http")) {
// let fileName = "";
// let type = 2;
// let flag =
// [
// ".zip",
// ".gzip",
// ".tar",
// ".taz",
// ".rar",
// ".7z",
// ".gz",
// ".bz2",
// ].filter((el) => list[i].url.toLowerCase().includes(el)).length > 0;
// if (flag) {
// fileName = list[i].url.split("/")[
// list[i].url.split("/").length - 1
// ];
// type = 1;
// } else {
// fileName = uuid.v4() + ".png";
// type = 2;
// }
// let p = path.join(
// process.cwd(),
// `./${getCurrentVersion()}/Input/` + fileName
// );
// let stream = fs.createWriteStream(p);
// request(list[i].url)
// .pipe(stream)
// .on("close", async function() {
// if (type === 1) {
// list[i].list = await zip(p, dirPath);
// if (count === list.length - 1) {
// resolve(list);
// }
// } else {
// if (!list[i].list) list[i].list = [];
// const filename = list[i].url.split("/")[
// list[i].url.split("/").length - 1
// ];
// console.log(filename);
// list[i].list.push({
// fileName,
// productionFile: p,
// designId: filename.split("_GCPS")[0],
// });
// }
// if (count === list.length - 1) {
// // console.log(list);
// resolve(list);
// }
// count++;
// });
// }
// }
// } catch (err) {
// console.log(err);
// reject(err);
// }
// });
// };
export
const
downloadImage
=
(
list
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
return
new
Promise
(
async
(
resolve
,
reject
)
=>
{
try
{
// console.log("Formatted Folder Name:", folderName); // 检查替换结果
let
dirPath
=
path
.
join
(
process
.
cwd
(),
`./
${
getCurrentVersion
()}
/Input/`
);
console
.
log
(
62
,
dirPath
);
console
.
log
(
"list"
,
list
);
const
dirPath
=
path
.
join
(
process
.
cwd
(),
`./
${
getCurrentVersion
()}
/Input/`
);
// 创建目录(如果不存在)
if
(
!
fs
.
existsSync
(
dirPath
))
{
fs
.
mkdirSync
(
dirPath
);
fs
.
mkdirSync
(
dirPath
,
{
recursive
:
true
}
);
}
let
count
=
0
;
for
(
let
i
=
0
;
i
<
list
.
length
;
i
++
)
{
if
(
list
[
i
].
url
&&
list
[
i
].
url
.
includes
(
"http"
))
{
let
fileName
=
""
;
let
type
=
2
;
let
flag
=
[
// 过滤出有效的下载项
const
downloadItems
=
list
.
filter
(
(
item
)
=>
item
.
url
&&
item
.
url
.
includes
(
"http"
)
);
// 如果没有需要下载的项,直接返回
if
(
downloadItems
.
length
===
0
)
{
return
resolve
(
list
);
}
// 并行处理所有下载
const
downloadPromises
=
downloadItems
.
map
((
item
)
=>
{
return
new
Promise
(
async
(
itemResolve
)
=>
{
try
{
const
archiveExtensions
=
[
".zip"
,
".gzip"
,
".tar"
,
...
...
@@ -81,52 +167,68 @@ export const downloadImage = (list) => {
".7z"
,
".gz"
,
".bz2"
,
].
filter
((
el
)
=>
list
[
i
].
url
.
toLowerCase
().
includes
(
el
)).
length
>
0
;
if
(
flag
)
{
fileName
=
list
[
i
].
url
.
split
(
"/"
)[
list
[
i
].
url
.
split
(
"/"
).
length
-
1
];
type
=
1
;
}
else
{
fileName
=
uuid
.
v4
()
+
".png"
;
type
=
2
;
}
let
p
=
path
.
join
(
process
.
cwd
(),
`./
${
getCurrentVersion
()}
/Input/`
+
fileName
);
let
stream
=
fs
.
createWriteStream
(
p
);
request
(
list
[
i
].
url
)
.
pipe
(
stream
)
.
on
(
"close"
,
async
function
()
{
if
(
type
===
1
)
{
list
[
i
].
list
=
await
zip
(
p
,
dirPath
);
if
(
count
===
list
.
length
-
1
)
{
resolve
(
list
);
}
}
else
{
if
(
!
list
[
i
].
list
)
list
[
i
].
list
=
[];
const
filename
=
list
[
i
].
url
.
split
(
"/"
)[
list
[
i
].
url
.
split
(
"/"
).
length
-
1
];
console
.
log
(
filename
);
const
isArchive
=
archiveExtensions
.
some
((
ext
)
=>
item
.
url
.
toLowerCase
().
includes
(
ext
)
);
list
[
i
].
list
.
push
({
fileName
,
productionFile
:
p
,
designId
:
filename
.
split
(
"_GCPS"
)[
0
],
});
}
if
(
count
===
list
.
length
-
1
)
{
// console.log(list);
resolve
(
list
);
}
count
++
;
const
fileName
=
isArchive
?
item
.
url
.
split
(
"/"
).
pop
()
:
`
${
uuid
.
v4
()}
.png`
;
const
filePath
=
path
.
join
(
dirPath
,
fileName
);
// 使用流下载文件
const
writeStream
=
fs
.
createWriteStream
(
filePath
);
const
requestStream
=
request
(
item
.
url
);
// 添加超时处理
requestStream
.
on
(
"response"
,
(
response
)
=>
{
response
.
setTimeout
(
30000
,
()
=>
{
requestStream
.
abort
();
console
.
error
(
`下载超时:
${
item
.
url
}
`
);
itemResolve
();
});
});
}
}
// 使用管道连接请求流和写入流
requestStream
.
pipe
(
writeStream
);
// 等待下载完成
await
new
Promise
((
resolveStream
)
=>
{
writeStream
.
on
(
"finish"
,
resolveStream
);
writeStream
.
on
(
"error"
,
(
err
)
=>
{
console
.
error
(
`下载失败:
${
item
.
url
}
`
,
err
);
resolveStream
();
});
});
if
(
isArchive
)
{
// 处理压缩文件
item
.
list
=
await
zip
(
filePath
,
dirPath
);
}
else
{
// 处理普通图片文件
if
(
!
item
.
list
)
item
.
list
=
[];
const
originalName
=
item
.
url
.
split
(
"/"
).
pop
();
item
.
list
.
push
({
fileName
,
productionFile
:
filePath
,
designId
:
originalName
.
split
(
"_GCPS"
)[
0
],
});
}
}
catch
(
error
)
{
console
.
error
(
`处理失败:
${
item
.
url
}
`
,
error
);
}
finally
{
itemResolve
();
}
});
});
// 等待所有下载完成
await
Promise
.
all
(
downloadPromises
);
resolve
(
list
);
}
catch
(
err
)
{
console
.
log
(
err
);
console
.
error
(
"下载整体失败"
,
err
);
reject
(
err
);
}
});
...
...
src/server/utils/setImage.js
View file @
2edfa954
...
...
@@ -158,11 +158,7 @@ async function processImages(inputPath, outputPath, options = {}) {
results
=
await
cropTransparentEdges
(
inputPath
,
outputPath
,
options
);
}
else
{
// 处理单个图片
const
result
=
await
cropImageTransparentEdges
(
inputPath
,
outputPath
,
options
);
const
result
=
await
cropImage
(
inputPath
,
outputPath
,
options
);
results
=
[{
file
:
path
.
basename
(
inputPath
),
...
result
}];
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment