关于JAVA实现在线预览功能总结

IT教程 11个月前 https://55wd.com
956

java在线

SpringBoot写了一个小Demo,百度网盘地址:https://pan.baidu.com/s/1dS9M89GLR4AIVwJx4aMglg

一、写在线预览功能之前的准备:

1.安装openOffice软件,下载地址:http://www.openoffice.org/download/index.html

2.jdconverter 的jar包  pom依赖如下

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

二、效果图

关于JAVA实现在线预览功能总结

关于JAVA实现在线预览功能总结

三、核心代码

package com.example.util;
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.util.regex.Pattern;

/**
 * Created by lenovo12 on 2018/8/18.
 * doc docx ex.. ex..x ppt pptx
 */
public final class Office2PDF {
    private Office2PDF(){}

    private static OfficeManager singleOfficeManager = null;
    /**
     * 将office格式的文件转为pdf
     * @param sourceFilePath 源文件路径
     * @return
     */
    public static File openOfficeToPDF(String sourceFilePath){
        return office2pdf(sourceFilePath);
    }

    /**
     * 将office文档转换为pdf文档
     * @param sourceFilePath 原文件路径
     * @return
     */
    public static File office2pdf(String sourceFilePath){
        OfficeManager officeManager = null;
        try{
            if(StringUtil.isEmpty(sourceFilePath))
            {
                //打印日志...
                return null;
            }
            File sourceFile = new File(sourceFilePath);
            if(!sourceFile.exists())
            {
                //打印日志...
                return null;
            }

            String after_convert_file_path = getAfterConverFilePath(sourceFilePath);
            //启动openOffice
            officeManager = getOfficeManager();
            OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
            return convertFile(sourceFile,after_convert_file_path,sourceFilePath,converter);
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("转换异常");
        }finally {
           if(officeManager != null){
               try {
                   officeManager.stop();
               } catch (OfficeException e) {
                   e.printStackTrace();
               }
           }
        }
        return null;
    }

    /**
     * 转换文件
     * @param sourceFile 原文件
     * @param after_convert_file_path 转换后存放位置
     * @param sourceFilePath 原文件路径
     * @param converter 转换器
     * @return
     */
    public static File convertFile(File sourceFile,
                           String after_convert_file_path,String sourceFilePath,OfficeDocumentConverter converter) throws OfficeException {
        File outputFile = new File(after_convert_file_path);
        if(!outputFile.getParentFile().exists()){
            //如果上级目录不存在也就是E:/pdfFile这个文件夹不存在则创建一个
            outputFile.getParentFile().mkdirs();
        }
            converter.convert(sourceFile,outputFile);
        return outputFile;
    }

    public static OfficeManager getOfficeManager(){
        if(singleOfficeManager == null)
        {
            DefaultOfficeManagerBuilder builder = new DefaultOfficeManagerBuilder();

            builder.setOfficeHome(getOfficeHome());
            OfficeManager officeManager = builder.build();
            try {
                officeManager.start();
                singleOfficeManager = officeManager;
            } catch (OfficeException e) {
                //打印日志
                System.out.println("start openOffice Fail!");
                e.printStackTrace();
            }
            return singleOfficeManager;
        }
        else
        {
            return singleOfficeManager;
        }
    }

    /**
     * 获取转换后文件存放的路径
     * @param sourceFilePath 源文件
     * @return
     */
    public static String getAfterConverFilePath(String sourceFilePath){
        //截取源文件文件名
        String sourceFileName = sourceFilePath.substring(sourceFilePath.lastIndexOf("/") + 1);
        return "E:/pdfFile/" + sourceFileName.replaceAll("\\."+FileUtil.getFileSuffix(sourceFileName),".pdf");
    }

    /**
     * 获取openOffice的安装目录
     * @return
     */
    public static String getOfficeHome(){
        String osName = System.getProperty("os.name");
        if(Pattern.matches("Windows.*",osName))
        {
            return "C:/Program Files (x86)/OpenOffice 4";
        }
        else if(Pattern.matches("Linux.*",osName))
        {
            return "/usr/temp";
        }
        else if (Pattern.matches("Mac.*",osName))
        {
            return "/Application/openOfficeSoft";
        }
        return null;
    }
}

四、踩过的坑

如果把代码整合放到SSM项目中去,小数点后面的数据将直接被忽略,也就是访问/read/java.doc,理想情况是接收到了fileName这个参数为 "java.doc",结果Debug发现fileName 是"java" ,后面的.doc不见了。解决方案就是在@RequestMapping的value中使用SpEL来表示,value中的{fileName}换成{fileName:.+}。

关于JAVA实现在线预览功能总结

关于JAVA实现在线预览功能总结

sobel算子原理与实现

一、原理: 首先介绍背景知识:  1)边缘:灰度或结构等信息的突变处,边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图

Java小游戏——是男人就坚持20秒

Java小游戏——是男人就坚持20秒 给大家分享一个小游戏,这是一个Swing项目,先用代码画界面板,然后依次添加飞机、子弹、计时器等: 代

QQ语音进度条功能怎么用?

手机QQ迎来了最新版本8.0.0。其中新增的一个功能就是QQ语音进度条功能,非常的便捷实用。而qq语音进度条功能怎么用呢?跟着小编一起

QQ影音云播放功能设置及使用教程

虽然很少用户使用QQ影音云播放,但是小编今天在这里要为大家介绍下QQ影音云播放功能的使用,首先看看QQ影音云播放的具体操作步骤。 

Axure:如何实现下拉刷新的效果?

如何利用Axure去实现下拉刷新的效果?一起来文中看看~思路如下:拖动页面,显示箭头朝下的图标,文字提示“下拉刷新”;继续拖动,当拖动高度

文章回顾

大家看了本文关于JAVA实现在线预览功能总结的精彩教程资源内容,是不是对关于JAVA实现在线预览功能总结了解更多,真心希望关于JAVA实现在线预览功能总结能帮助到你, 小编会一直给你带来更多教程资源文章信息。

版权声明:0893d35e9aca8861 发表于 2020-03-13 7:40:24。

本文由第三方用户分享仅代表作者观点,不代表本网站立场,秉承互联网开放分享的精神,目的在于传递更多信息,加强各行业互通交流,但对内容不作任何保证或承诺,请读者自行参考斟酌。网站发布的信息(包含但不限于版式、图片、字体、文章等素材)由第三方用户分享,版权归原作者所有,本站不承担任何相关的版权纠纷等相关责任。如您认为本篇内容侵犯了您的权益,请与我们联系,我们会及时处理。

豌豆资源网专注分享全网综合资源网站大全,致力于超实用的内容资源搜索。

转载请注明:
本文标题:关于JAVA实现在线预览功能总结
本文地址:https://55wd.com/s60393/

你可能感兴趣

随便逛逛