使用libreOffice实现文档转换
看了一圈文档下来,这个东西看起来是openOffice的延续,完全开源,放心使用,个人使用下来是比openOffice好用。
对,就是你能想到的文档他都能转。
首先,这个libreOffice必须得安装,它的功能很强的。可以编辑各种文件,我们这里只关注文档转换,因为这个在业务使用较为频繁,而单纯的java代码又转换不了。
下载地址:www.libreoffice.org/download/do… 两个包:一个安装包一个SDK包 window安装比较简单:下一步下一步搞定,有用户界面的,看起来很清晰,用起来应该不难。
想要跟java代码集成有个比较好用的工具 jodconverter。 github地址:github.com/jodconverte… Maven地址: org.jodconverter jodconverter-local 4.4.7
demo 代码也超级简单:
public static void main(String[] args) throws OfficeException { File inputFile = new File("C:\Users\ll\1234.docx"); File outputFile = new File("C:\Users\ll\1234.pdf");
basic(inputFile,outputFile);
filter(inputFile,new File("C:\\Users\\ll\\12345.pdf"));
}
public static void basic(File source,File target) throws OfficeException {
//创建一个管理器
OfficeManager officeManager =
LocalOfficeManager.builder()
.install()
.portNumbers(18081)
.officeHome("C:\\Program Files\\LibreOffice")
.build();
try {
officeManager.start(); //启动它
JodConverter.convert(source).to(target).execute(); //直接转换
} finally {
// Stop the office process
OfficeUtils.stopQuietly(officeManager);
System.out.println("success");
}
}
public static void filter(File source,File target) throws OfficeException {
final PagesSelectorFilter selectorFilter = new PagesSelectorFilter(2,3); //可以使用过滤器 ,这个是可以选择转换哪几页
OfficeManager officeManager =
LocalOfficeManager.builder()
.install()
.portNumbers(18081)
.officeHome("C:\\Program Files\\LibreOffice")
.build();
try {
officeManager.start();
LocalConverter.builder().filterChain(selectorFilter).build()//这里配置一下过滤器
.convert(source)
.to(target)
.execute();
} finally {
// Stop the office process
OfficeUtils.stopQuietly(officeManager);
System.out.println("success");
}
}
就这几行代码,转出来的文件格式字体尤其是windows上简直完美,linux系统应该是需要安装中文字体的,这个根据自己的实际安装即可。 当然 坑 肯定是有的,我掉里面一个就是你看他github上的文档少了一步: .install() ,虽然写文档的那货在stackoverflow上态度端正的回复了这个问题, 但是你大爷的你倒是改掉呀,现在(2024-06)还错着呢。
还有springboot的集成包:
org.jodconverter jodconverter-spring-boot-starter 4.4.7引入依赖,直接注入。 代码地址:gitee.com/luxiao_gite… gitee上的工程代码还是一个在线的liberOffice服务器,调用接口即可实现文档的转化。
以上 使用libreOffice实现文档转换 欢迎大佬批评指正!
转载自:https://juejin.cn/post/7381396879056666665