Java office在线预览实现--openoffice

来源:互联网 发布:中银淘宝校园卡 编辑:程序博客网 时间:2024/05/12 15:19

Java office在线预览实现–openoffice

本篇主要介绍用openoffice来实现office文档转换为pdf,从而方便在线预览。
首先去下载安装openoffice;
然后启动服务,这是启动命令:

cd C:\Program Files (x86)\OpenOffice 4\program soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;"

如果项目和该服务不在同一台机器上,ip地址设为该服务启动机器的地址
需要用到的jar包:

 <dependency>     <groupId>com.artofsolving</groupId>     <artifactId>jodconverter</artifactId>     <version>2.2.1</version> </dependency>

代码:

/**   * 方法示例: * String sourcePath = "F:\\office\\source.doc"; * String destFile = "F:\\pdf\\target.pdf"; * office2PDF(sourcePath, destFile);*/    public static void office2PDF(String infile, String targetfile)throws Exception {        // 获得文件格式        DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry();        DocumentFormat pdfFormat = formatReg.getFormatByFileExtension("pdf");//目标文件格式        DocumentFormat Format;        String[] p = infile.split("\\.");        String postfix = p[p.length-1].substring(0,3);        //原文件格式包括doc,docx,xls,xlsx,ppt,pptx        Format = formatReg.getFormatByFileExtension(postfix);        InputStream inputStream = new FileInputStream(infile);        OutputStream outputStream = new FileOutputStream(targetfile);        OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);//如果项目不在该服务所在机器,将ip改为openoffice安装的机器地址        try {            connection.connect();            DocumentConverter converter = new StreamOpenOfficeDocumentConverter(connection);            converter.convert(inputStream,Format, outputStream, pdfFormat);            outputStream.flush();            outputStream.close();            inputStream.close();        } catch (ConnectException e) {            e.printStackTrace();        }finally {            if(connection!=null){                connection.disconnect();                connection = null;            }        }    }

在转换成功后,有可能生成的pdf文件会出现字体不一致的问题,主要是office 文档所用字体,本机系统中没有,所以需要下载新的字体到本机,window是在c盘window下的font文件夹。目前存在的一个问题是转换速度较慢。

0 0
原创粉丝点击