admin 发表于 2014-11-12 08:36

java仿百度文库实现文档在线预览项目源码

一:测试平台 win7 64位系统
二:准备软件 OpenOffice、swftools
OpenOffice 下载地址:http://www.openoffice.org/download/index.html
swftools下载地址:http://www.swftools.org/download.html
三:测试代码
1、conf.properties 软软件路径配置
OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 4

SWFTools_HOME = D:/SWF/SWFTools第一行 是OpenOffice的安装路径 安装的时候请记住。
第二行 是swftools的安装路径。
你可以自定义安装路径最好放到一起、便于管理。
2、文档转换
/**
         * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。
         *
         * fileSuffix 文件的后缀。
         */
      private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){
                File sourceFile = new File(sourceFilePath);
                if (sourceFile.exists()) {
                        String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录
                String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";
                System.out.println("command"+command);
                try {
                        Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务
                            OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);
                              connection.connect();
                              if(connection.isConnected()){//如果连接成功
                                        DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
                                        converter.convert(sourceFile, new File(pdfFileSavePath));
                                        connection.disconnect();// close the connection
                                        process.destroy();// 封闭OpenOffice服务的进程
                                        System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****");
                                        return true;
                              }else{
                                        return false;//swf转换器异常,openoffice连接失败!
                              }
                        } catch (ConnectException e) {
                              e.printStackTrace();
                              System.out.println("****swf转换器异常,openoffice服务未启动!****");
                              return false;
                        } catch (OpenOfficeException e) {
                              e.printStackTrace();
                              System.out.println("****swf转换器异常,读取转换文件失败****");
                              return false;
                        } catch (Exception e) {
                              e.printStackTrace();
                              return false;
                        }
                } else {
                        System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");
                        return false;
                }
      }将pdf文件转换为swf文件:
/**
         * 将pdf文件转换为swf文件。
         *
         * @author ghj
         */
      private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){
                String OS = System.getProperty("os.name").toLowerCase();
                Map<String, String> returnMap = new HashMap<String, String>();
                File pdfFile = new File(pdfFilePath);
                Runtime r = Runtime.getRuntime();
                if (pdfFile.exists()) {
                        String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录
                        try {
                              if (OS.indexOf("windows")>=0) {// windows环境处理
                                        Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);
                                        System.out.print(loadStream(process.getInputStream()));
                                        System.err.print(loadStream(process.getErrorStream()));
                                        System.out.print(loadStream(process.getInputStream()));
                                        System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
                                        process.destroy();// 销毁进程
                              } else if (OS.indexOf("linux")>=0) {// linux环境处理
                                        Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");
                                        System.out.print(loadStream(process.getInputStream()));
                                        System.err.print(loadStream(process.getErrorStream()));
                                        System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
                                        process.destroy();// 销毁进程
                              }
                              if (pdfFile.exists()) {
                                        pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。
                              }
                              returnMap.put("status", "true");
                  returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字
                        } catch (IOException e) {
                              e.printStackTrace();
                              returnMap.put("status", "false");
                        }
                        return returnMap;
                } else {
                        System.out.println("****pdf不存在,无法转换****");
                        returnMap.put("status", "false");
                        return returnMap;
                }
      }
四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools
测试页面:







源码下载地址:点击下载


软件下载地址:点击下载


woniu 发表于 2016-4-12 12:18

这个项目太棒勒!下下来学习下!

贝斯特 发表于 2016-5-5 15:39

感谢分享   ,

浮生六记 发表于 2017-1-6 16:50

感谢分享,mark~
页: [1]
查看完整版本: java仿百度文库实现文档在线预览项目源码