java在线预览

该文章展示了一个Java工具类,用于利用JODConverter库连接并启动OpenOffice服务,进行文档转换,特别是将文件转换为PDF。在服务层,代码读取源文件,将其转换为PDF,然后将结果输出到响应流中,供前端下载或查看。
摘要由CSDN通过智能技术生成
package com.jeesite.modules.common.utils;

import org.jodconverter.office.DefaultOfficeManagerBuilder;
import org.jodconverter.office.OfficeException;
import org.jodconverter.office.OfficeManager;

public class OfficeManagerUtils {

    /**
     *
     * @return 返回一个OfficeManager实例,用于处理转换业务
     * @throws OfficeException
     */

    static OfficeManager getOfficeManager() throws OfficeException {
        DefaultOfficeManagerBuilder builder=new DefaultOfficeManagerBuilder();
        //此处入参可以填写OpenOffice安装路径,本例子中,openOffice安装在E盘
        //builder.setOfficeHome("D:/Program Files (x86)/OpenOffice 4");
        builder.setOfficeHome("/opt/openoffice4");
        OfficeManager officeManager =builder.build();
        //officeManager提供了开启OpenOffice的API服务
        officeManager.start();
        return officeManager;
    }
}
package com.jeesite.modules.common.utils;

import org.jodconverter.OfficeDocumentConverter;
import org.jodconverter.office.OfficeException;
import org.jodconverter.office.OfficeManager;

import java.io.File;

import static com.jeesite.modules.common.utils.OfficeManagerUtils.getOfficeManager;

public class OfficeDocumentConverterUtils {
    public static File openOfficeExperience(String sourceFilePath){
        OfficeManager officeManager = null;
        String name="convertFile.pdf";
        File outputFile=new File(name);
        try {
            //开启OpenOffice服务
            OfficeManager manage=getOfficeManager();
            File sourceFile = new File(sourceFilePath);
            //设置转换后的文件存储路径,文件名

            //使用OfficeDocumentConverter类转换文件,其实核心就这一句
            OfficeDocumentConverter converter=new OfficeDocumentConverter(manage);
            converter.convert(sourceFile,outputFile);
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            //关闭资源占用
            if(officeManager != null){
                try {
                    officeManager.stop();
                } catch (OfficeException e) {
                    e.printStackTrace();
                }
            }
        }
        return outputFile;
    }
}

上面工具类

service层

try {
			String outPath = AsposeUtil.OfficeToPdf(url);
			
			InputStream in = FileConvertUtil.convertLocaleFile(url, suffix);
			File outputFile = new File(outPath);
			InputStream in = new FileInputStream(outputFile);
			OutputStream outputStream = response.getOutputStream();
			// 创建存放文件内容的数组
			byte[] buff = new byte[1024];
			// 所读取的内容使用n来接收
			int n;
			// 当没有读取完时,继续读取,循环
			while ((n = in.read(buff)) != -1) {
				// 将字节数组的数据全部写入到输出流中
				outputStream.write(buff, 0, n);
			}
			// 强制将缓存区的数据进行输出
			outputStream.flush();
			// 关闭流
			outputStream.close();
			in.close();
		} catch (Exception e) {
			throw new RuntimeException(e);
		}

前端点击事件  通过controller 调service

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值