linux平台 doc转pdf,Linux下SpringBoot实现Word转PDF

引言

最近由于项目需要一个Word在线预览的功能,由于考虑基于Linux平台做部署,实现真正的Word在线预览是不现实的,所以考虑通过Word转PDF实现PDF的在线预览。

经过一番研究,试了多种方式包括POI实现Word转PDF,以及Word转HTML再转PDF等方式,但均存在操作非常复杂和效果不理想以及兼容性不好等问题,最终锁定借助LibreOffice实现Word转PDF的方案。

Linux安装LibreOffice(在Ubuntu Server 18.04下实验)

LibreOffice_6.2.2_Linux_x86-64_deb.tar.gz

LibreOffice_6.2.2_Linux_x86-64_deb_langpack_zh-CN.tar.gz

LibreOffice_6.2.2_Linux_x86-64_deb_sdk.tar.gz

2.将三个安装包复制到Linux系统,执行以下指令:

sudo mkdir /opt/libreoffice

sudo tar -zxvf LibreOffice_6.2.2_Linux_x86-64_deb.tar.gz -C /opt/libreoffice/

sudo tar -zxvf LibreOffice_6.2.2_Linux_x86-64_deb_langpack_zh-CN.tar.gz -C /opt/libreoffice/

sudo tar -zxvf LibreOffice_6.2.2_Linux_x86-64_deb_sdk.tar.gz -C /opt/libreoffice/

cd /opt/libreoffice/LibreOffice_6.2.2.2_Linux_x86-64_deb/DEBS

sudo dpkg -i *.deb

cd /opt/libreoffice/LibreOffice_6.2.2.2_Linux_x86-64_deb_sdk/DEBS

sudo dpkg -i *.deb

cd /opt/libreoffice/LibreOffice_6.2.2.2_Linux_x86-64_deb_langpack_zh-CN/DEBS

sudo dpkg -i *.deb

sudo apt-get install libxinerama1

sudo apt-get install libcairo2-dev

sudo apt-get install libcups2-dev

Word转PDF测试

libreoffice6.2 --headless --invisible --convert-to pdf --outdir

此时可在输出目录看到已经生成了转换后的PDF文件,但是打开查看文件发现字符乱码。

添加字体支持

1.下载如下字体:

simsun.ttc 宋体

simhei.ttf 黑体

msyh.ttf 微软雅黑

msyhbd.ttf 微软雅黑

2.在/usr/share/fonts/truetype下面建立一个文件夹CustomizedGonts,把字体文件复制进来。

3.把字体文件夹和字体文件都赋予权限

sudo chmod 777 CustomizedFonts

cd CustomizedFonts

sudo chmod 777 *

4.安装字体

sudo mkfontscale

sudo mkfontdir

sudo fc-cache

Word转PDF测试

libreoffice6.2 --headless --invisible --convert-to pdf --outdir

此时可在输出目录看到已经生成了转换后的PDF文件,并且文字显示正常。

Spring Boot工程

1.添加Maven依赖

org.jodconverter

jodconverter-core

4.2.0

org.jodconverter

jodconverter-local

4.2.0

org.jodconverter

jodconverter-spring-boot-starter

4.2.0

org.libreoffice

ridl

5.4.2

2.配置application.ptoperties

jodconverter.local.enabled=true

jodconverter.local.office-home=/opt/libreoffice6.2

jodconverter.local.port-numbers=8100,8101,8102

jodconverter.local.max-tasks-per-process=100

3.pdf转换代码

@RestController

@RequestMapping("/doc")

public class PDFController {

@Autowired

private DocumentConverter documentConverter;

@RequestMapping("/pdf")

public void toPdf() throws OfficeException {

File word = new File("/home/doc/123.doc");

File pdf = new File("/home/doc/123.pdf");

documentConverter.convert(word).to(pdf).execute();

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值