使用的核心是这段命令:
soffice --headless --convert-to pdf --outdir ' + 输出路径 + ' ' + 源文件路径
在node中的使用的话,需要使用子进程来运行命令行,如下所示,这里是封装成了promise的形式:
const process = require('child_process')const outputPath = 'upload/pdf/' // office translate module.exports = function(enterPath) { return new Promise((resolve, reject) => { process.exec('soffice --headless --convert-to pdf --outdir ' + outputPath + ' ' + enterPath, (err, stdout, stderr) => { if (err || stderr) return reject(err || stderr) resolve(stdout) }) }) }
也可以像这样写:
const util = require('util') const process = require('child_process') var exec = util.promisify(process.exec) // office translate async function officeToPdf(enterPath, outputPath) { const { stdout, stderr } = await exec( 'soffice --headless --convert-to pdf --outdir ' + outputPath + ' ' + enterPath ) console.log('stdout:', stdout) console.log('stderr:', stderr) }
在node中使用案例:https://github.com/yejunm3/office_transform
libreoffice下载地址:https://www.libreoffice.org/download/download/