java openoffice 实现在线预览文件

一、简介需求:根据文件 url ,实现文件在线预览解决方法:1、前端前端可以直接使用微软的共有接口来在线浏览office产品(word/excel/ppt),如下:<iframe src='https://view.officeapps.live.com/op/view.aspx?src=你的文件地址' width='100%' height='100%' frameborder...
摘要由CSDN通过智能技术生成

一、简介

需求:根据文件 url ,实现文件在线预览
解决方法
1、前端
前端可以直接使用微软的共有接口来在线浏览office产品(word/excel/ppt),如下:

<iframe src='https://view.officeapps.live.com/op/view.aspx?src=你的文件地址' width='100%' height='100%' frameborder='1'>

看起来简介明了,但是有个缺点:你的文件地址必须对外可访问。其原理是通过请求微软的服务去解析你的文件,如果你的文件对外不可访问,这个方法就不行。
2、后端
前端实现不了,只能后端用Java来处理了,思路是利用 open office 将文件转换成pdf或者html,我的实现方法是word/ppt转成pdf,excel转成html。excel转成html,转成PDF格式超级丑。

二、实现文件转换

前言:
按下面两种方法实现,都有点麻烦,且最后成功了预览大文件有任务阻塞,导致后面的预览都预览不了,所以推荐下面链接这个方法,如果不是用springboot也可以改改相关代码,亲测有效!
https://blog.csdn.net/starboyss/article/details/78498974

Java开发预览word/excel/ppt需要安装open office,在windows和linux系统上都需要安装。
window安装:注意下载软件安装的时候,在安装类型选择的时候选择自定义安装,在自定义安装的时候要选择文件安装地址,这个地址是最后需要使用到的地址。安装完成后有一个openOffice 4/program文件夹。
openOffice相关jar包主要有两个版本,一种是和代码在同一台服务器上,一种是安装在远程的其他服务器上。前者支持office03/07文件转换,后者仅支持office03文件转换,可以通过将07版本的后缀改成03版本的方式来解决此问题,具体下面有代码。

(一)和代码在同一台服务器上

引入jar包

<dependency>
    <groupId>org.jodconverter</groupId>
    <artifactId>jodconverter-core</artifactId>
    <version>4.0.0-RELEASE</version>
</dependency>

相关代码:

import com.ctrip.common.exception.BusinessException;
import com.ctrip.framework.clogging.agent.log.ILog;
import com.ctrip.framework.clogging.agent.log.LogManager;
import org.jodconverter.OfficeDocumentConverter;
import org.jodconverter.office.DefaultOfficeManagerBuilder;
import org.jodconverter.office.OfficeException;
import org.jodconverter.office.OfficeManager;

import java.io.File;
import java.io.IOException;
import java.util.regex.Pattern;

//启动openoffice方法靠路径
public class Office2PreviewFile {

    private static ILog logger = LogManager.getLogger(Office2PreviewFile.class);

    /**
     * 将office格式的文件转为pdf
     *
     * @param sourceFile  源文件
     * @param targetFilePath 生成的pdf/html文件保存地址
     * @return pdf文件
     */
    public static File fileToPreviewFile(File sourceFile, String targetFilePath) throws BusinessException {
        try {
            //启动openOffice
            OfficeManager officeManager = getOfficeManager();
            OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
            return 
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值