在Node.js中执行命令
我正在尝试执行Node.js中的命令,以便使用在Node.js中执行命令,node.js,process,libreoffice,Node.js,Process,Libreoffice,我正在尝试执行Node.js中的命令,以便使用libreoffice将office文档转换为PDF。这是核心代码: var fs = require('fs'); var path = require('path'); var exec = require('child_process').exec; var convert = function (file, cb) { try { var p = path.parse(file); var pdf
libreoffice
将office文档转换为PDF。这是核心代码:
var fs = require('fs');
var path = require('path');
var exec = require('child_process').exec;
var convert = function (file, cb) {
try {
var p = path.parse(file);
var pdf = path.join(p.dir, p.name) + '.pdf';
var cmd = 'soffice --headless --convert-to pdf --outdir "' + p.dir + '" "' + file + '"';
console.info(cmd);
exec(cmd, function (err, stdout, stderr) {
if (err) {
cb(err);
return;
}
if (fs.existsSync(pdf)) {
cb(null, pdf);
} else {
cb("not exist");
}
});
} catch (err) {
cb(err);
}
};
module.exports = {convert: convert};
然而,有两个问题:
{"error":
{"killed":false,
"code":1,
"signal":null,
"cmd":"C:\\WINDOWS\\system32\\cmd.exe /s /c \"soffice --headless --convert-to pdf --outdir \"D:/test\" \"D:/test/a.doc\"\""
}
}
但一旦我手动运行命令:
soffice --headless --convert-to pdf --outdir "D:/test" "D:/test/a.doc"
我可以得到PDF文件soffice….
命令将在生成PDF之前立即返回,这意味着我无法确定文件是何时生成的我可以将word转换为HTML:
execHTML = exec('soffice --headless --invisible --nolockcheck --convert-to html --outdir ' + fileNameHTML + ' ' + filesString,
function(error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ', error);
}
});
execHTML.on('close', function(code) {
if (code > 0) {
return callback(code);
} else {
callback();
}
})