openoffice实现office文件转换为pdf实现文件预览

来源:互联网 发布:手机壁纸软件may 编辑:程序博客网 时间:2024/05/29 18:37


在工作中用到这功能,找了好多方法,都出现不同的问题,故整合下,随意看看。

转载:点击打开链接

拿出一个例子。。

1.下载安装openoffice:点击打开链接

2.openoffice启动服务两种:

1.在安装目录下的program文件夹中:D:\installs\OpenOffice 4\program按住shift并右击,打开命令窗口:

soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard  

缺点就是长期打开服务,占用资源

2.java代码中调用,调用结束服务就关闭(我采用的就是这种方式)

详见代码

3.jar包:Jodconverter 2.2.2 我放在了百度云盘上了:http://pan.baidu.com/s/1o8eTV3G

其中Jodconverter 2.2.2,在maven库上只有2.2.1,到不支持docx等07版文件格式,所以要自己导入2.2.2;其他都能在maven公共库上依赖到

代码如下:

import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import com.artofsolving.jodconverter.DocumentConverter;import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;import com.artofsolving.jodconverter.openoffice.converter.StreamOpenOfficeDocumentConverter;import com.beyondsoft.hz.bysworkprd.common.util.ErrorCodeConstants;/** *  * @author Administrator * @version $Id: FileConverter.java, v 0.1 2016年4月14日 上午10:52:54 Administrator Exp $ */public class FileConverter {    private static final String FILEURL = "E:/workspace/bkprd_20160315/bprd/webapp/src/main/webapp";    private String fileString;     //需要预览的目标文件地址    private String outputPath = "";// 输入路径,如果不设置就输出在默认位置      private String fileName;    private File   pdfFile;    private File   docFile;    static String loadStream(InputStream in) throws IOException {        int ptr = 0;        //把InputStream字节流 替换为BufferedReader字符流 2013-07-17修改          BufferedReader reader = new BufferedReader(new InputStreamReader(in));        StringBuilder buffer = new StringBuilder();        while ((ptr = reader.read()) != -1) {            buffer.append((char) ptr);        }        return buffer.toString();    }    public FileConverter(String fileString) {        ini(fileString);    }    /*初始化    @param fileString     */    private void ini(String fileurl) {        //拼接文件地址        this.fileString = FileConverter.FILEURL + fileurl;        //截取文件名(去掉点以后的文件后缀)        fileName = fileString.substring(0, fileString.lastIndexOf("."));        //        System.out.println("截取文件名[fileName]:" + fileName);        docFile = new File(fileString);        pdfFile = new File(fileName + ".pdf");    }    /*转换主方法     * true:转换完成     * false:     */    public String conver() {        if (fileString.endsWith(".pdf")) {            return ErrorCodeConstants.PDF_EXIST;        }        String rsult = file2pdf();        return rsult;    }    /*转为PDF        @param file     */    private String file2pdf() {        /**          * 检测目标文件是否存在          * exists:true:存在   false:不存在          */        if (!docFile.exists()) {            //            System.out.println("****doc2pdf()-swf转换器异常,需要转换的文档不存在,无法转换****");            return ErrorCodeConstants.NO_AIM_FILE;        }        /**         *  pdf文档已存在         */        if (pdfFile.exists()) {            return ErrorCodeConstants.PDF_EXIST;        }        /**********************自动启动服务************************/        try {            //OpenOffice的安装目录            String OpenOffice_HOME = "D:\\installs\\OpenOffice 4";            // 如果从文件中读取的URL地址最后一个字符不是 '\',则添加'\'            if (OpenOffice_HOME.charAt(OpenOffice_HOME.length() - 1) != '\\') {                OpenOffice_HOME += "\\";            }            // 启动OpenOffice的服务            String command = OpenOffice_HOME                             + "program\\soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";            //            System.out.println("-------服务开始启动-----------");            Process pro = Runtime.getRuntime().exec(command);            OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);            connection.connect();            DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);            //            System.out.println("-------服务已启动-----------");            converter.convert(docFile, pdfFile);            // close the connection            connection.disconnect();            // 关闭OpenOffice服务的进程              pro.destroy();            //            System.out.println("-------服务已停止-----------");            //                    System.out.println("****doc2pdf()-pdf转换成功,PDF输出:" + pdfFile.getPath() + "****");        } catch (java.net.ConnectException e) {            return ErrorCodeConstants.SERVER_ERROR;            //                    System.out.println("****doc2pdf()-swf转换异常,openoffice服务未启动!****");        } catch (com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException e) {            return ErrorCodeConstants.LOAD_FILE_FAIL;            //                    System.out.println("****doc2pdf()-swf转换器异常,读取转换文件失败****");        } catch (Exception e) {            return ErrorCodeConstants.UNKNOWN_ERROR;        }        return ErrorCodeConstants.SUCCESS;    }}

0 0
原创粉丝点击