我正在尝试在 nodejs lambda 函数中运行 ghosscript 命令。我将 ghostscript 二进制文件保存在我的一个文件夹中。在这里使用 child_process.execFile 执行是我的代码。
module.exports = function gsConvert(args) {
return new Promise(async function (resolve, reject) {
try {
console.log("dirname :: ", __dirname);
args = [
"-dBATCH",
"-dNOPAUSE",
"-dPDFFitPage=true",
"-dDEVICEWIDTHPOINTS=800",
"-dDEVICEHEIGHTPOINTS=800",
"-sPageList=1",
"-sDEVICE=jpeg",
`-sOutputFile="${imgFilePath}"`,
`"${filePath}"`,
];
//----------
await execFile(
"./bin/gs",
args,
{
// cwd: `${__dirname}`,
'cwd': "/var/task/src/lambda/pdfThumbnail/ghostScript",
'maxBuffer': 1024 * 2000,
},
function (err, stdout, stderr) {
if (err) {
reject(err);
} else if (stderr.length > 0) {
reject(new Error(stderr.toString()));
} else {
resolve(stdout);
}
}
);
} catch (err) {
reject({ "err :: ": err });
}
});
};
但它给出了错误-
{ Error: Command failed: ./bin/gs -dBATCH -dNOPAUSE -dPDFFitPage=true -dDEVICEWIDTHPOINTS=800 -dDEVICEHEIGHTPOINTS=800 -sPageList=1 -sDEVIC './bin/gs -dBATCH -dNOPAUSE -dPDFFitPage=true -dDEVICEWIDTHPOINTS=800 -dDEVICEHEIGHTPOINTS=800 -sPageList=1 -sDEVICE=jpeg -sOutputFile="/tmp/java_tutorial.jpeg" "/tmp/doc.pdf"' }
"Error :: ": {
"killed": false,
"code": 1,
"signal": null,
"cmd": "./bin/gs -dBATCH -dNOPAUSE -dPDFFitPage=true -dDEVICEWIDTHPOINTS=800 -dDEVICEHEIGHTPOINTS=800 -sPageList=1 -sDEVICE=jpeg -sOutputFile=\"/tmp/java_tutorial.jpeg\" \"/tmp/doc.pdf\""
}
我的命令在终端中成功运行,但在 lambda 函数中,我在更改 args =[--version] 时遇到问题,然后它显示正确的输出。这意味着 Ghostscript 二进制文件是可执行的,但我的主要命令不是不起作用