资讯专栏INFORMATION COLUMN

SpringBoot使用LibreOffice转换PDF

mcterry / 1155人阅读

摘要:用将文档转换本例使用。在和环境下测试通过。转换命令源文件放在或者封装了一组转换命令,通过调用相关服务。安装检查已有字体库复制字体新建文件夹把系统的字体复制进去。

用LibreOffice将Office文档转换PDF

本例使用 LibreOffice-6.0.4jodconverter-4.2.0spring-boot-1.5.9.RELEASE
CentOS7 + openJDK8Windows7 + jdk1.8 环境下测试通过。

LibreOffice转换命令
# 源文件放在 e:	mp123.docx 或者 /tmp/123.docx

# windows
soffice.exe --headless --invisible --convert-to pdf e:	mp123.docx --outdir e:	mp

# linux
/usr/bin/libreoffice6.0 --headless --invisible --convert-to pdf /tmp/123.docx --outdir /tmp

jodconverter封装了一组转换命令,通过java调用LibreOffice相关服务。

pom依赖

  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

注意: 在这里说明特别一下,jodconverter4.2开始,对LibreOffice相关功能从jodconverter-core中分离出来,封装到为jodconverter-local,另外新增了jodconverter-online,支持LibreOffice online server的远程调用。

配置 application.properties
jodconverter.local.enabled=true
# 设置LibreOffice主目录
jodconverter.local.office-home=${pom.office.home}
# 开启多个LibreOffice进程,每个端口对应一个进程
jodconverter.local.portNumbers=8100,8101,8102
# LibreOffice进程重启前的最大进程数
jodconverter.local.maxTasksPerProcess=100

使用Maven的多环境配置


  
    
    win
    
      true
    
    
      C:/Program Files/LibreOffice
    
  
  
    
    linux
    
      /opt/libreoffice6.0
    
  
调用方法
import org.jodconverter.DocumentConverter;

@Resource
private DocumentConverter documentConverter;

// 具体转换方法,参数是java.io.File
documentConverter.convert(sourceFile).to(targetFile).execute();

convert方法 接受参数 java.io.Filejava.io.InputStream

to方法 接受参数 java.io.Filejava.io.OutputStream

在线预览

使用开源项目 https://github.com/mozilla/pdf.js
下载最新的release包(pdfjs-x.y.z-dist.zip)

pdfjswebviewer.html传入参数file(示例:http://localhost:8080/pdfjs/web/viewer.html?file=xxxxxxx.pdf

CentOS7安装LibreOffice

官网
https://zh-cn.libreoffice.org/

科大镜像
http://mirrors.ustc.edu.cn/td...

中文语言包
http://mirrors.ustc.edu.cn/td...

下载安装包
wget -P /tmp/office http://mirrors.ustc.edu.cn/tdf/libreoffice/stable/6.0.4/rpm/x86_64/LibreOffice_6.0.4_Linux_x86-64_rpm.tar.gz

wget -P /tmp/office http://mirrors.ustc.edu.cn/tdf/libreoffice/stable/6.0.4/rpm/x86_64/LibreOffice_6.0.4_Linux_x86-64_rpm_langpack_zh-CN.tar.gz
解压缩
tar zxvf /tmp/office/LibreOffice_6.0.4_Linux_x86-64_rpm.tar.gz -C /tmp/office

tar zxvf /tmp/office/LibreOffice_6.0.4_Linux_x86-64_rpm_langpack_zh-CN.tar.gz -C /tmp/office
检查安装包
ll /tmp/office/LibreOffice_6.0.4.2_Linux_x86-64_rpm/RPMS/*.rpm

ll /tmp/office/LibreOffice_6.0.4.2_Linux_x86-64_rpm_langpack_zh-CN/RPMS/*.rpm
用yum安装,不要执行install
yum install /tmp/office/LibreOffice_6.0.4.2_Linux_x86-64_rpm/RPMS/*.rpm

yum install /tmp/office/LibreOffice_6.0.4.2_Linux_x86-64_rpm_langpack_zh-CN/RPMS/*.rpm
安装libcairo.so.2依赖库
yum install ibus
查找服务目录

安装路径:/opt/libreoffice6.0
快捷方式:/usr/bin/libreoffice6.0

启动服务
/usr/bin/libreoffice6.0 --headless --accept="socket,host=127.0.0.1,port=8100;urp;" --nofirststartwizard
CentOS7安装字体库

在CentOS7服务器上,利用LibreOffice将word等格式转换为PDF,发现不支持汉字。需要安装字体库。

安装fontconfig
yum -y install fontconfig

安装完成后,/usr/share目录就可以看到fonts和fontconfig两个目录。

安装ttmkfdir
yum -y install ttmkfdir
检查已有字体库
fc-list
复制字体
#新建文件夹
mkdir /usr/share/fonts/chinese

把Windows系统的字体C:WindowsFonts复制进去。

simsun.ttc 宋体

simhei.ttf 黑体

msyh.ttf 微软雅黑

msyhbd.ttf 微软雅黑

# 修改字体权限
chmod -R 644 /usr/share/fonts/chinese
汇总生成fonts.scale文件
ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
修改字体配置文件
vim /etc/fonts/fonts.conf
修改内容

  ....
  ....
  /usr/share/fonts/chinese
  ....
更新字体缓存
fc-cache -fv

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69606.html

相关文章

  • 工具库-基于LibreOffice实现文档操作

    摘要:基于实现的文档转换项目,无框架依赖,即插即用项目源代码技术栈功能使用安装配置获取依赖编辑配置文件执行转换按照文件路径转换按照输入输出流转换按照文件转换图片处理按照文件路径处理按照文件处理添加水印按照文件路径添加水印按照流添加水印按照添加水 基于libreoffice实现的文档转换项目,无框架依赖,即插即用 项目源代码:github/workable-converter 1. 技术栈 ...

    ZoomQuiet 评论0 收藏0
  • jodconvert的亚子

    摘要:由于公司要求限制,该项目在下开发,非,因此需要传统方式引入相关依赖包。此外,的启动与结束需要自己控制。项目启动时调用结束时关闭转换服务启动成功找不到源文件则返回假如目标路径不存在则新建该路径转换服务完成。 简介 引入jodconverter相关jar,配合libreOffice、openOffice两款软件,只需进行简单编码可以实现各种文档转换。 应用 目前已在两个项目中应用: F项目...

    jayce 评论0 收藏0
  • Java中常用的几种DOCX转PDF方法

    摘要:而利用接口进行读取与生成的方式性能较好,适用于对于格式要求不是很高的情况。 本文从属于笔者的Java入门与最佳实践系列文章。 DOCX2PDF 将DOCX文档转化为PDF是项目中常见的需求之一,目前主流的方法可以分为两大类,一类是利用各种Office应用进行转换,譬如Microsoft Office、WPS以及LiberOffice,另一种是利用各种语言提供的对于Office文档读取的...

    zgbgx 评论0 收藏0
  • 在网页中预览excel表格文件

    摘要:项目需求在前端页面中实现预览表格的功能,上网了解之后大致总结为一下几种方法。第四种方法把表格打开后,另存为格式的文件。在网页上预览效果和表格一致。 项目需求在前端页面中实现预览excel表格的功能,上网了解之后大致总结为一下几种方法。 1.office文档转换为pdf,再转swf,然后通过网页加载flash进行预览 2.通过 xlsx.js,jszip.js插件 3.django xl...

    Honwhy 评论0 收藏0

发表评论

0条评论

mcterry

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<