java实现office文件的在线预览

java实现office文件的在线预览

要实现office文件的在线预览,需要将office文件转换为pdf文件,然后打开

  1. 首先需要安装openOfice
  2. 去官网先将openOffice 下载下来Apache OpenOffice - Official Download
  3. 在java中导入依赖,导入依赖可能会导致报错,是因为本地maven仓库没有此依赖
  4.  所以需要去下载jar包,将jar放入本地maven资源仓库,在这里我提供了所需的jar包,有需要的可以去下载
  5. 链接:https://pan.baidu.com/s/1gRlN6KHlL3nMz5fB7l-EIQ        提取码:zxcv
  6. 下载号好之解压到Maven仓库的"com\artofsolving\"这个路径下( 如果没有这个路径就创建 )

完成上面这步操作之后就可以配置Maven依赖了

        <dependency>
			<groupId>com.artofsolving</groupId>
			<artifactId>jodconverter</artifactId>
			<version>2.2.2</version>
		</dependency>
		<dependency>
			<groupId>org.openoffice</groupId>
			<artifactId>jurt</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.openoffice</groupId>
			<artifactId>ridl</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.openoffice</groupId>
			<artifactId>juh</artifactId>
			<version>3.0.1</version>
		</dependency>
		<dependency>
			<groupId>org.openoffice</groupId>
			<artifactId>unoil</artifactId>
			<version>3.0.1</version>
		</dependency>

我将openoffice 的转换写成了一个工具类放在下面,有需要可以直接使用

/**
 * Created with IntelliJ IDEA.
 *
 * @Auther: 李子叔叔
 * @Date: 2021/01/20/18:39
 * @Description:
 */
public class OppenOffice {
    // 将word格式的文件转换为pdf格式
    //startFile为源文件地址
    //overFile为转换之后的文件地址
    public static boolean WordToPDF(String startFile, String overFile) throws IOException {
        // 源文件目录
        File inputFile = new File(startFile);
        System.out.println(startFile);

        //
        File outFile = new File(overFile);
        if (!inputFile.exists()) {
            System.out.println("源文件不存在!");
            return false;
        }
        // 输出文件目录
        File outputFile = new File(overFile);
        if (!outputFile.getParentFile().exists()) {
            outputFile.getParentFile().exists();
        }


        // 调用openoffice服务线程
        /** 我把openOffice下载到了 C:/Program Files (x86)/下  ,下面的写法自己修改编辑就可以**/
        String command = "C:\\Program Files (x86)\\OpenOffice 4\\program\\soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";
        Process p = Runtime.getRuntime().exec(command);

        // 连接openoffice服务
        OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);

        connection.connect();

        // 转换
        DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
        converter.convert(inputFile, outputFile);

        // 关闭连接
        connection.disconnect();

//         关闭进程
        p.destroy();
        return  true;
    }
}

写完工具类之后在控制层拿到两个地址就可以直接调用工具类进行转换,在控制器用流的方式打开也行,也可以将转换完成之后的地址返回到前台

使用流打开

//overoFile为转换之后的路径
File file = new File(overFile);
        //判断文件是否存在
        if (file.exists()){
            byte[] data = null;
            try {
                FileInputStream input = new FileInputStream(file);
                data = new byte[input.available()];
                input.read(data);
                response.getOutputStream().write(data);
                input.close();
            } catch (Exception e) {
                System.out.println(e);
            }

        }else{
            return;
        }

//js
 function openFile(fileId) {
       window.open("/openOffice?fileId="+fileId);
    }

在前端直接打开

 function openFile(fileId) {
        $.ajax({
            url:"/openOffice?fileId="+fileId,//控制器路径
            type:"get",
            async: false,
            success:function (data) {
                $.modal.open("预览文件",data);
            }
        })
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值