nodejs+libreoffice 将word转成pdf
项目场景:
项目场景:项目中遇到一个需求,前端要预览word,不知道怎么做,只能后端转了,我使用的nodejs + libreoffice,先将word转成pdf,发送给前端 然后前端预览pdf就好了
问题描述:
提示:第一次用的 这个例子,虽然能将word装成pdf,但是有水印,找了很久都没有找到去水印的方法,朋友们可以尝试一下,然后分享给我
然后我在网上看到还有使用libreoffice可以转pdf,果断尝试
解决方案:
1.安装libreoffice。下载地址: 根据自己的电脑选择就好 我是window 系统 ,所以就记录自己的方法
“LibreOffice 免费给所有人使用。您可以复制 LibreOffice 的副本并安装在任意数量的计算机上,并以任何目的使用 (包括商用、政府、公共管理以及教育用途)。更多详情请见随 LibreOffice 下载而来的许可文本。”这是libreoffice的自述,所以可以放心使用
下载完成之后一直下一步安装就好了。安装完成之后,在终端输入soffice,
如果提示既不是内部命令也不是外部命令,就需要配置环境变量了,我一开始就是没有配置环境变量 被坑了好久。
配置环境变量步骤:此电脑->右击选择属性->高级系统设置->环境变量->在系统变量中找到Path->点击“编辑”,在最后面将本地“libreoffice”的安装路径添加进去
如果不知道自己的libreoffice的安装路径可以右键点击libreoffice快捷方式,点击属性,打开文件所在位置,下图是我的安装路径,到这一层级就好了
配置好了环境变量,重新打开cmd,输入soffice,会打开libreoffice,说明环境配置已经做好了,就可以开始些代码使用它了
可以依赖office-to-pdf
npm install office-to-pdf -S
新建officetoPdf.js
var toPdf = require("office-to-pdf");
var fs = require(fs);
// 转换word为PDF
function wordToPdf(){
let wordFile = ./www/ + "123.docx";
console.log(53,wordFile)
return fs.readFile(wordFile, function(err, result){
console.log(55,result)
if(err){
console.log(err);
}else{
toPdf(result).then(
(pdfBuffer) => {
console.log(60,pdfBuffer)
fs.writeFileSync("./www/test.pdf", pdfBuffer);
console.log(成功生成PDF文件)
// sendFileToServer(./pdf/test.pdf , /sftp/pdf/test.pdf)
}, (err) => {
console.log(66,err);
}
);
}
});
}
wordToPdf();
在cmd执行 node officetoPdf 就可以将word转为pdf了
