在线转换openoffice

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;

import org.apache.log4j.Logger;
import org.springframework.util.Assert;

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;

public class ConvertUtil {

    private static Logger log = Logger.getLogger(SendMessageUtil.class); 

    /**
     * Method name: convertOfficeToSwf <BR>
     * Description: 文件转换方法,可以把.doc .docx .ppt .pptx .xls .xlsx 文件转换成.swf文件 <BR>
     * Remark: <BR>
     * @param filepath  传入文件的路径及文件名(最前面不要带"/") 示例:   aa/bb.docx<BR>
     * @return  boolean 发送结果 true:转换成功,false:转换失败<BR>
     */
    @SuppressWarnings("resource")
    public static boolean convertOfficeToSwf(String filepath) {
        // 定义服务器的地址、用户名、密码
        String hostname = PropertyUtil.getConfigureProperties("SERVER_HOST");
        String username = PropertyUtil.getConfigureProperties("USER_NAME");
        String password = PropertyUtil.getConfigureProperties("PASS_WORD") + PropertyUtil.getDatabaseProperties("keyword");
        // 从property文件中获取路径前辍
        String filepath_prefix = PropertyUtil
                .getConfigureProperties("FILE_PATH");
        filepath = filepath_prefix + filepath;
        String fileName = filepath.substring(0, filepath.lastIndexOf("."));
        // 拼出pdf和swf文件的路径
        String pdfFile = fileName + ".pdf";
        String swfFile = fileName + ".swf";
        log.info("pdf file path: " + pdfFile);
        log.info("swf file path: " + swfFile);

        String commadStr = "java -jar /home/hxj/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar "
                + filepath
                + " "
                + pdfFile
                + ";export LD_LIBRARY_PATH=/usr/local/lib;pdf2swf "
                //+ ";pdf2swf "
                + pdfFile
                + " -o "
                + swfFile;
        log.info("command string: " + commadStr);

        // 指明连接主机的IP地址
        Connection conn = new Connection(hostname);
        Session ssh = null;
        try {
            // 连接到主机
            conn.connect();
            // 使用用户名和密码校验
            boolean isconn = conn.authenticateWithPassword(username, password);
            if (!isconn) {
                log.info("ssh connect fail,username or password error");
            } else {
                log.info("ssh connect success");
                ssh = conn.openSession();
                // 使用多个命令用分号隔开
                ssh.execCommand(commadStr.toString());
                // 只允许使用一行命令,即ssh对象只能使用一次execCommand这个方法,多次使用则会出现异常
                // 将屏幕上的文字全部打印出来

                InputStream stdout = new StreamGobbler(ssh.getStdout());
                InputStream stderr = new StreamGobbler(ssh.getStderr());
                BufferedReader stdoutReader = new BufferedReader(
                                    new InputStreamReader(stdout));
                            BufferedReader stderrReader = new BufferedReader(
                                    new InputStreamReader(stderr));  

                log.info("Here is the output from stdout:");
                while (true) {
                    String line = stdoutReader.readLine();
                    if (line == null)
                        break;
                    log.info(line);
                }

                log.info("Here is the output from stderr:");
                while (true) {
                    String line = stderrReader.readLine();
                    if (line == null)
                        break;
                    log.info(line);
                }

                log.info("ssh finish");
            }
            // 连接的Session和Connection对象都需要关闭
            ssh.close();
            conn.close();
            return true;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            log.error("file convert fail");
            return false;
        }
    }

    // 视频转码后的文件后缀
    private static final String FLV_FILE_EXT = ".flv";
    // 视频转码开关: on表示开启;off表示关闭
    private static final String VIDEO_CONVERT_SWITCH_ON = "on";
    // 支持的视频类型文件后缀名,暂时只有一种,可以按需添加
    // 注意需要对应修改相关的上传控件的参数:添加对应的后缀名
    private static final Set<String> SUPPORTED_VIDEO_TYPE_SET;
    static {
        SUPPORTED_VIDEO_TYPE_SET = new HashSet<String>();
        SUPPORTED_VIDEO_TYPE_SET.add(".mp4");
    }

    /**
     * @author JFTT)wangyifeng
     * Method name: needConvertToFlv <BR>
     * Description: 判断是否需要进行视频转码 <BR>
     * Remark: <BR>
     * @param fileExt 文件后缀名
     * @return  boolean 返回传入的文件后缀类型是否需要进行视频转码:true需要;false不需要<BR>
     */
    public static boolean needConvertToFlv(String fileExt) {
        String VIDEO_CONVERT_SWITCH = PropertyUtil
                .getConfigureProperties("VIDEO_CONVERT_SWITCH");
        log.info(String.format("VIDEO_CONVERT_SWITCH value is %s.",
                VIDEO_CONVERT_SWITCH));
        // 视频转码开关不等于VIDEO_CONVERT_SWITCH_ON时,固定返回false,即认为不需要转码
        if (!VIDEO_CONVERT_SWITCH_ON.equals(VIDEO_CONVERT_SWITCH)) {
            return false;
        }
        Assert.hasText(fileExt);
        return SUPPORTED_VIDEO_TYPE_SET.contains(fileExt.toLowerCase());
    }

    /**
     * @author JFTT)wangyifeng
     * class name:ConvertToFlvFailedException <BR>
     * class description: 视频转码异常类(运行时异常) <BR>
     * Remark: <BR>
     * @version 1.00 2015/09/24
     */
    public static class ConvertToFlvFailedException extends RuntimeException {
        private static final long serialVersionUID = 1L;

        public ConvertToFlvFailedException(String message) {
            super(message);
        }

        public ConvertToFlvFailedException(String message, Throwable e) {
            super(message, e);
        }
    }

    /**
     * Method name: convertToFlv <BR>
     * Description: 视频文件转换方法,把常用的视频文件如:mp4,avi,3gp等转换成flv文件用于网页播放 <BR>
     * Remark: <BR>
     * 1.调用该方法前,请先用needToBeConvertedToFlv方法来确认待转换文件是否支持视频转码<BR>
     * 2.视频转码失败时会抛出运行时异常:ConvertToFlvFailedException<BR>
     * @param filepath 传入文件的路径及文件名(最前面不要带"/") 示例:   aa/bb.docx<BR>
     * @return  String 发送结果 转换成功:转换后的文件路径及文件名;转换失败:抛出ConvertToFlvFailedException异常<BR>
     */
    @SuppressWarnings("resource")
    public static String convertToFlv(String filepath) {
        // 定义服务器的地址、用户名、密码
        String hostname = PropertyUtil.getConfigureProperties("SERVER_HOST");
        String username = PropertyUtil.getConfigureProperties("USER_NAME");
        String password = PropertyUtil.getConfigureProperties("PASS_WORD")
                + PropertyUtil.getDatabaseProperties("keyword");
        // 从property文件中获取路径前辍
        String filepath_prefix = PropertyUtil
                .getConfigureProperties("FILE_PATH");
        log.info("input video file: " + filepath_prefix + filepath);
        // 拿到文件扩展名
        String fileExt = filepath.substring(filepath.lastIndexOf("."),
                filepath.length());

        // 如果获取到的扩展名经判断无需转码,则扔异常
        if (!needConvertToFlv(fileExt)) {
            throw new ConvertToFlvFailedException(String.format(
                    "传入的视频文件不需要转码: %s.", filepath_prefix + filepath));
        }

        String fileName = filepath.substring(0, filepath.lastIndexOf("."));
        // 拼出flv文件的路径
        String flvFile = fileName + FLV_FILE_EXT;
        log.info("flv file path: " + filepath_prefix + flvFile);

        // 拼接命令字符串
        String commadStr = "ffmpeg -i "
                + filepath_prefix
                + filepath
                + " "
                + "-ab 128 -acodec libmp3lame -ac 2 -ar 22050 -qscale 10 -s 640*480 -r 15 "
                + filepath_prefix + flvFile;
        log.info("command string: " + commadStr);

        // 指明连接主机的IP地址
        Connection conn = new Connection(hostname);
        Session ssh = null;
        try {
            // 连接到主机
            conn.connect();
            // 使用用户名和密码校验
            boolean isconn = conn.authenticateWithPassword(username, password);
            if (!isconn) {
                log.info("ssh connect fail,username or password error");
                throw new ConvertToFlvFailedException(
                        "ssh connect fail,username or password error");
            }
            log.info("ssh connect success");
            ssh = conn.openSession();
            // 使用多个命令用分号隔开
            ssh.execCommand(commadStr.toString());
            // 只允许使用一行命令,即ssh对象只能使用一次execCommand这个方法,多次使用则会出现异常
            // 将屏幕上的文字全部打印出来

            InputStream stdout = new StreamGobbler(ssh.getStdout());
            InputStream stderr = new StreamGobbler(ssh.getStderr());
            BufferedReader stdoutReader = new BufferedReader(
                    new InputStreamReader(stdout));
            BufferedReader stderrReader = new BufferedReader(
                    new InputStreamReader(stderr));

            log.info("Here is the output from stdout:");
            while (true) {
                String line = stdoutReader.readLine();
                if (line == null)
                    break;
                log.info(line);
            }

            log.info("Here is the output from stderr:");
            while (true) {
                String line = stderrReader.readLine();
                if (line == null)
                    break;
                log.info(line);
            }

            log.info(String.format("ssh finished with exit status: %d",
                    ssh.getExitStatus()));

            if (ssh.getExitStatus() != 0) {
                throw new ConvertToFlvFailedException(
                        "file convert fail: command exit code is not 0!");
            }
            return flvFile;
        } catch (IOException e) {
            log.error("file convert fail", e);
            throw new ConvertToFlvFailedException("file convert fail", e);
        } finally {
            // 连接的Session和Connection对象都需要关闭
            if (ssh != null) {
                ssh.close();
            }
            if (conn != null) {
                conn.close();
            }
        }
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        convertOfficeToSwf("a.docx");
//        convertOfficeToSwf("b2.xlsx");
//        convertOfficeToSwf("c1.ppt");
//        convertOfficeToSwf("c2.pptx");
    }

}
时间: 2024-10-21 00:52:05

在线转换openoffice的相关文章

图片在线转换,大小在线转换

一.图片在线转换,大小在线转换 http://images.my-addr.com/resize_png_online_tool-free_png_resizer_for_web.php 二.图片在线转ico http://www.img2ico.net/ 疯吻IT

职场老手教你pdf转换成jpg在线转换

完成pdf转换jpg有很多种方法,在线转换就是其中一种,很多的在线pdf转换成jpg有令用户很是无奈,转换文件的大小有限制,转换多个文件也不行,转换的形式也过于单一.遇到这些问题的小伙伴们,那是你们没有发现职场老手们都在用迅捷在线pdf转换器,这里在线pdf转换成jpg转换器可以完全满足你的大胃口. 职场老手告诉你下载转换软件前先使用在线转换方法:我们随便下载一款转换工具,如果它很好用,就可以顺利将pdf转换成jpg文件,但是如果我们下载的转换工具是需要购买后才能转换的要怎么办呢?如果转换工具的

免费excel转换pdf在线转换的方法

工作中我们常常会遇到意想不到的事情,对于文本格式转换来说,我们不仅仅需要掌握word转换成pdf技巧,还需要了解excel转换成pdf方法.否则当我们遇到文件需要转换时,就会一愁莫展,无从下手.今天就简单向大家说下excel转换pdf在线转换的方法. Excel转换成pdf在很多的转换方法下转换出来的pdf文件常常乱码一篇,为了更好的恢复excel表格的原貌,我们需要的是一款高质量的转换工具.在这一点上,迅捷pdf转换器在线是国内首家采用新一代的pdf超线程解析核心技术,和独家研发的文件内容解析

unicode 编码在线转换工具--javascript

unicode 编码在线转换工具--javascript 本人在网上搜索,看到有使用javascript做unicode编码转换的,感觉很好玩,所以拿来使用的. 这个功能有目前测试了两种: 1)unicode互相转换,例如\u4e2d\u56fd转换成字符,支持中文和英文: 2)URL编码的解析,例如众所周知的%20是表示空格,还有%24,%33,%44,%62等等: 我相信,只要你试试上面的字符进行解码,你就会知道他们之间关系,如何表示字符,数字,字母. 以上可以直接运行.下面给出相关的JS代

使用FlashPaper在线转换.doc为.swf_实用技巧

https://yq.aliyun.com/ziliao/160044?spm=5176.8246799.0.0.JBbqjY 摘要: 本文讲的是使用FlashPaper在线转换.doc为.swf_实用技巧, FlashPaper 是Macromedia推出的一款电子文档类工具!通过使用FlashPaper,可以将需要的文档通过简单的设置转换为SWF格式的Flash动画,原文档的排版样式和字体显示不会收到影响,这样做的好处是不论对方的平台和语言 云计算 云服务器ECS 大数据 建站 备案 文档

PDF转换成PPT格式在线转换怎么转

pdf是出了名的难编辑,想要编辑这种格式的文件可不像其他格式文件那样容易,但只要找对了方法也没有大家想象的那么难,下面以pdf转换ppt为例,分享简单的转换方法给大家. 将pdf转换成ppt格式不是一定要用转换工具的,pdf转ppt在线同样也能完成转换: 找到转换平台之后,在众多转换格式转换中选择你需要转换的两种格式转换如:PDF转PPT,直接点击“PDF转PPT”. 传转换文件,具体操作:点击“选择文件”按钮,在出现的对话框中选择需转换文件,点击打开,文件就会被上传到PDF在线转换平台; 最后

在线转换JSON与PHP数组(json php array)

在线转换json与php数组 www.jsonaz.com 例如json数据 { "number" : 1, "tuple" : [1,2,3], "dict" : { "a": "apple", "b": "banana" }, "complex": { "person": { "name" : "

pdf在线转换成word格式的方法

大家在遇到pdf转word时,如果不知道简单的转换方法可能只能采取手动输入的方式将pdf文件转换成word格式,但是现在科技这么发达,我们解决问题根本不需要这么麻烦.下面我就来告诉大家怎样将pdf转换成word格式最简单. 首先大家将pdf格式转换器安装到电脑中,建议安装正版的: 安装好转换工具之后我们就可以开始转换了,打开软件,第一步就是找到转换格式,软件的功能很全,办公中的格式基本都有,使用起来很方便: 选中转换格式之后就可以添加文件了,单击添加文件按钮,文件多的单击添加文件夹按钮,找到要转

ppt转换pdf在线转换

ppt转换pdf在线转换商业人士交流时少不了做一些演讲报告,然,要将数十张ppt演示文稿放在一起,翻阅起来十分麻烦,这时可以尝试使用在线版ppt转换成pdf转换器,利用软件提供的多种格式转换功能,快速解决ppt转pdf的转换. 免费的 在线版pp转pdf转换器有吗?答案是肯定,尽管网上的转换工具很多,但是转换质量各不相同,大部分的转换软件转换出来的结果很不令人满意,打开一看,惊悚的画面出现了,一推厚重的文字乱码.一行行没有规则的编排格式,让用户看后十分苦恼. 不同于传统的ppt转换成pdf转换器