项目需要将各种txt docx pptx ppt doc xlsx xls 文档类型转成PDF 并在终端显示,查阅资料发现能使用openoffice实现,记录一下使用心得。
一 安装openoffice 网上很多安装教程 window版本下无脑下一步。
spring boot 导入依赖 【spring boot 各种文档类型转pdf 之openOffice使用】注意 :jodconverter 2.2.1 不支持docx和xlsx等格式 而jodconverter 2.2.2版本是支持。但是jodconverter 2.2.2 在maven仓库是找到不到的 需要自己去网上下载jar包后放在项目下自己导入
文章图片
com.sun
jna
1.0
>system
>${project.basedir}/src/main/resources/lib/jodconverter-2.2.2.jar
com.sun
jna
1.0
>system
>${project.basedir}/src/main/resources/lib/commons-io-1.4.jar
org.openoffice
jurt
3.2.1
org.openoffice
ridl
4.1.2
org.openoffice
juh
3.1.0
org.openoffice
unoil
3.0.1
spring boot 下使用openOffice
package com.example.demo.until;
import com.artofsolving.jodconverter.DefaultDocumentFormatRegistry;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.DocumentFormatRegistry;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
import com.artofsolving.jodconverter.openoffice.converter.StreamOpenOfficeDocumentConverter;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.io.*;
import java.net.ConnectException;
import java.net.URL;
/**
* @Author:linjunbo
* @Description:
* @Date: 2020/4/28 14:21
*/
@Component
public class Office4Pdf {
public static File Office2Pdf(File file){
//启动服务
openOpenOffice();
/*支持txt docx pptx ppt doc xlsx xls转pdf*/
//判断源文件是否存在
if (!file.exists()){
throw new RuntimeException("源文件不存在!");
}
// 输出文件目录
File outputFile = new File("C:/buildingBoard/video/pic/photo/"+file.getName().substring(0,file.getName().lastIndexOf("."))+".pdf");
// 创建openoffice服务连接
OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);
try {
//连接OpenOffice服务
connection.connect();
//创建文件转换器
DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);
//开始转换
converter.convert(file, outputFile);
if (outputFile.exists()){
System.out.println("文件转换成功!");
return outputFile;
}
} catch (ConnectException e) {
e.printStackTrace();
throw new RuntimeException("OpenOffice服务启动失败!");
}finally {
//关闭连接
connection.disconnect();
}
return outputFile;
} //启动OpenOffice服务
private static void openOpenOffice() {
try {
//openOffice的安装路径
String command = "C:\\Program Files (x86)\\OpenOffice 4\\"
+ "program\\soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;
urp;
\"";
Process pro = Runtime.getRuntime().exec(command);
} catch (IOException e) {
e.printStackTrace();
}
}public static void main(String[] args) throws ConnectException, FileNotFoundException {
//测试文件路径
String path = "C:/buildingBoard/video/pic/photo/1121..1.doc";
File file = new File(path)System.out.println(Office2Pdf(file));
}
}
推荐阅读
- 第五节:SpringBoot常用注解介绍
- 第四节:SpringBoot中web模版数据渲染展示
- SpringBoot2022【草稿】
- 聊聊springboot项目全局异常处理那些事儿
- 第一节:创建SpringBoot项目并运行HelloWorld
- springboot管理系统[基于员工角色和文件权限的分级的后台管理系统源码]
- SpringBoot之@ComponentScan和@SpringBootApplication扫描覆盖问题
- mybatis|记mybatis查询null字段导致的NPE
- SpringBoot|SpringBoot 整合 druid数据源
- springboot项目配置application添加图片映射 (windows and linux 都可使用)