栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Boot整合OpenOffice实现Word、Excel、PPT在线预览

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot整合OpenOffice实现Word、Excel、PPT在线预览

Spring Boot整合OpenOffice实现Word、Excel、PPT在线预览 1 介绍下OpenOffice

官网:https://www.openoffice.org/download/

Apache OpenOffice是一款先进的开源 办公软件套件,它包含文本文档、电子表格、演示文稿、绘图、数据库等。 它能够支持许多语言并且在所有普通计算机上工作。它将你所有的数据以国际开放标准格式存储下来,并能够读写从其它常用办公软件包来的文件。它可以被完全免费下载并使用于任何用途。

2 安装OpenOffice

然后直接下一步安装就可以了,步骤过于简单这里省略,如有问题可以留言哈

3 Spring Boot整合

新建Spring Boot项目

3.1 依赖

    org.jodconverter
    jodconverter-core
    4.2.2



    org.jodconverter
    jodconverter-spring-boot-starter
    4.2.2



    org.jodconverter
    jodconverter-local
    4.2.2



    commons-io
    commons-io
    2.6

3.2 配置文件
server.port=9999
#使能
jodconverter.local.enabled=true
#OpenOffice安装地址
jodconverter.local.office-home=C:/Program Files (x86)/OpenOffice 4
#同时执行任务的个数
jodconverter.local.max-tasks-per-process=10
#设置端口号(任意设置)
jodconverter.local.port-numbers=8110
#controller工具参数
online.buffer.path=C:/online_pdf/
online.buffer.file.name=hello.pdf
3.3 项目结构

3.4 编码

OnlineDocDao.java

@Repository
public class OnlineDocDao {

    
    @SuppressWarnings("all")
    public String getFiles(int fileIndex) {
        switch (fileIndex) {
            case 1:
                return "file1.docx";
            case 2:
                return "file2.docx";
            case 3:
                return "file3.docx";
            case 4:
                return "1.xlsx";
            default:
                return "file1.docx";
        }
    }
}

OnlineDocService.java

public interface OnlineDocService {

    
    String readDoc(int fileIndex);
}

OnlineDocServiceImpl.java

@Service
public class OnlineDocServiceImpl implements OnlineDocService {

    @Autowired
    private OnlineDocDao onlineDocDao;

    @Override
    public String readDoc(int fileIndex) {
        return onlineDocDao.getFiles(fileIndex);
    }
}

OnlineDocController.java

@Controller
@SuppressWarnings("all")
public class OnlineDocController {

    
    @Autowired
    private documentConverter converter;

    
    @Autowired
    private OnlineDocService onlineDocService;

    @Value("${online.buffer.path}")
    private String bufferPath;

    @Value("${online.buffer.file.name}")
    private String bufferFileName;

    
    @RequestMapping("/toPdfFile/{index}")
    public void toPdfFile(@PathVariable("index") Integer index, HttpServletResponse response) {
        String fileName = onlineDocService.readDoc(index);
        File file = new File("src/main/resources/static/" + fileName);
        ServletOutputStream outputStream = null;
        InputStream in = null;
        //转换之后文件生成的地址
        File newFile = new File(bufferPath);
        if (!newFile.exists()) newFile.mkdirs();
        try {
            //文件转化
            converter.convert(file).to(new File(bufferPath + bufferFileName)).execute();
            outputStream = response.getOutputStream();
            in = new FileInputStream(new File(bufferPath + bufferFileName));
            IOUtils.copy(in, outputStream);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (in != null) in.close();
                if (outputStream != null) outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
3.5 启动测试

4 结语 4.1 为什么需要缓冲层?

4.2 OpenOffice端口号问题

因为看网上相同的文章的时候,端口号都写的8100,还以为OpenOffice的默认端口号是8100,但是改过了之后才发现,应该是Java连接OpenOffice时需要用到的进程端口号,可以随意设置,所以这个就不用管啦

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/297698.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号