`

JAVA+FlexPaper+OpenOffice+SWFTools文档预览

 
阅读更多

1、软件环境:

  • openoffice:启动openoffice服务:soffice.exe -headless -nologo -norestore -accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager
  • swftools
2、所需组件:
  • flexpaper : flexpaper_flash_debug.js,flexpaper_flash.js,jquery.js , FlexPaperViewer.swf    
  •  OpenDocument文档转换器 JODConverter, 主要用它的jodconverter-2.2.2.jar包

3、程序源码:

  • java转换器的程序代码:
    1. package correy.erp.util.converter;  
    2.   
    3. import java.io.BufferedInputStream;  
    4. import java.io.File;  
    5. import java.io.IOException;  
    6. import java.io.InputStream;  
    7.   
    8. import com.artofsolving.jodconverter.DocumentConverter;  
    9. import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;  
    10. import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;  
    11. import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;  
    12.   
    13.   
    14. public class DocConverter {  
    15.   
    16.      private static final int environment = 1;// 环境 1:windows 2:linux  
    17.      private String fileString;// (只涉及pdf2swf路径问题)  
    18.      private String outputPath = "";// 输入路径 ,如果不设置就输出在默认的位置  
    19.      private String fileName;  
    20.      private File pdfFile;  
    21.      private File swfFile;  
    22.      private File docFile;  
    23.       
    24.      public DocConverter(String fileString) {  
    25.           ini(fileString);  
    26.      }  
    27.   
    28.      /** 
    29.      * 重新设置file 
    30.      * 
    31.      * @param fileString 
    32.      */  
    33.      public void setFile(String fileString) {  
    34.           ini(fileString);  
    35.      }  
    36.   
    37.      /** 
    38.      * 初始化 
    39.      * 
    40.      * @param fileString 
    41.      */  
    42.      private void ini(String fileString) {  
    43.           this.fileString = fileString;  
    44.           fileName = fileString.substring(0, fileString.lastIndexOf("."));  
    45.           docFile = new File(fileString);  
    46.           pdfFile = new File(fileName + ".pdf");  
    47.           swfFile = new File(fileName + ".swf");  
    48.      }  
    49.       
    50.      /** 
    51.      * 转为PDF 
    52.      * 
    53.      * @param file 
    54.      */  
    55.      private void doc2pdf() throws Exception {  
    56.           if (docFile.exists()) {  
    57.                if (!pdfFile.exists()) {  
    58.                     OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);  
    59.                     try {  
    60.                          connection.connect();  
    61.                          DocumentConverter converter = new OpenOfficeDocumentConverter(connection);  
    62.                          converter.convert(docFile, pdfFile);  
    63.                          // close the connection  
    64.                          connection.disconnect();  
    65.                          System.out.println("****pdf转换成功,PDF输出:" + pdfFile.getPath()+ "****");  
    66.                     } catch (java.net.ConnectException e) {  
    67.                          e.printStackTrace();  
    68.                          System.out.println("****swf转换器异常,openoffice服务未启动!****");  
    69.                          throw e;  
    70.                     } catch (com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException e) {  
    71.                          e.printStackTrace();  
    72.                          System.out.println("****swf转换器异常,读取转换文件失败****");  
    73.                          throw e;  
    74.                     } catch (Exception e) {  
    75.                          e.printStackTrace();  
    76.                          throw e;  
    77.                     }  
    78.                } else {  
    79.                     System.out.println("****已经转换为pdf,不需要再进行转化****");  
    80.                }  
    81.           } else {  
    82.                System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");  
    83.           }  
    84.      }  
    85.       
    86.      /** 
    87.      * 转换成 swf 
    88.      */  
    89.      @SuppressWarnings("unused")  
    90.      private void pdf2swf() throws Exception {  
    91.           Runtime r = Runtime.getRuntime();  
    92.           if (!swfFile.exists()) {  
    93.                if (pdfFile.exists()) {  
    94.                     if (environment == 1) {// windows环境处理  
    95.                          try {  
    96.                               Process p = r.exec("E:/Program Files/SWFTools/pdf2swf.exe "+ pdfFile.getPath() + " -o "+ swfFile.getPath() + " -T 9");  
    97.                               System.out.print(loadStream(p.getInputStream()));  
    98.                               System.err.print(loadStream(p.getErrorStream()));  
    99.                               System.out.print(loadStream(p.getInputStream()));  
    100.                               System.err.println("****swf转换成功,文件输出:"  
    101.                                         + swfFile.getPath() + "****");  
    102.                               if (pdfFile.exists()) {  
    103.                                    pdfFile.delete();  
    104.                               }  
    105.   
    106.                          } catch (IOException e) {  
    107.                               e.printStackTrace();  
    108.                               throw e;  
    109.                          }  
    110.                     } else if (environment == 2) {// linux环境处理  
    111.                          try {  
    112.                               Process p = r.exec("pdf2swf " + pdfFile.getPath()  
    113.                                         + " -o " + swfFile.getPath() + " -T 9");  
    114.                               System.out.print(loadStream(p.getInputStream()));  
    115.                               System.err.print(loadStream(p.getErrorStream()));  
    116.                               System.err.println("****swf转换成功,文件输出:"  
    117.                                         + swfFile.getPath() + "****");  
    118.                               if (pdfFile.exists()) {  
    119.                                    pdfFile.delete();  
    120.                               }  
    121.                          } catch (Exception e) {  
    122.                               e.printStackTrace();  
    123.                               throw e;  
    124.                          }  
    125.                     }  
    126.                } else {  
    127.                     System.out.println("****pdf不存在,无法转换****");  
    128.                }  
    129.           } else {  
    130.                System.out.println("****swf已经存在不需要转换****");  
    131.           }  
    132.      }  
    133.   
    134.      static String loadStream(InputStream in) throws IOException {  
    135.   
    136.           int ptr = 0;  
    137.           in = new BufferedInputStream(in);  
    138.           StringBuffer buffer = new StringBuffer();  
    139.   
    140.           while ((ptr = in.read()) != -1) {  
    141.                buffer.append((char) ptr);  
    142.           }  
    143.   
    144.           return buffer.toString();  
    145.      }  
    146.      /** 
    147.      * 转换主方法 
    148.      */  
    149.      @SuppressWarnings("unused")  
    150.      public boolean conver() {  
    151.   
    152.           if (swfFile.exists()) {  
    153.                System.out.println("****swf转换器开始工作,该文件已经转换为swf****");  
    154.                return true;  
    155.           }  
    156.   
    157.           if (environment == 1) {  
    158.                System.out.println("****swf转换器开始工作,当前设置运行环境windows****");  
    159.           } else {  
    160.                System.out.println("****swf转换器开始工作,当前设置运行环境linux****");  
    161.           }  
    162.           try {  
    163.                doc2pdf();  
    164.                pdf2swf();  
    165.           } catch (Exception e) {  
    166.                e.printStackTrace();  
    167.                return false;  
    168.           }  
    169.   
    170.           if (swfFile.exists()) {  
    171.                return true;  
    172.           } else {  
    173.                return false;  
    174.           }  
    175.      }  
    176.   
    177.      /** 
    178.      * 返回文件路径 
    179.      * 
    180.      * @param s 
    181.      */  
    182.      public String getswfPath() {  
    183.           if (swfFile.exists()) {  
    184.                String tempString = swfFile.getPath();  
    185.                tempString = tempString.replaceAll("\\\\", "/");  
    186.                return tempString;  
    187.           } else {  
    188.                return "";  
    189.           }  
    190.   
    191.      }  
    192.      /** 
    193.      * 设置输出路径 
    194.      */  
    195.      public void setOutputPath(String outputPath) {  
    196.           this.outputPath = outputPath;  
    197.           if (!outputPath.equals("")) {  
    198.                String realName = fileName.substring(fileName.lastIndexOf("/"),  
    199.                          fileName.lastIndexOf("."));  
    200.                if (outputPath.charAt(outputPath.length()) == '/') {  
    201.                     swfFile = new File(outputPath + realName + ".swf");  
    202.                } else {  
    203.                     swfFile = new File(outputPath + realName + ".swf");  
    204.                }  
    205.           }  
    206.      }  
    207. }  
  • java文件上传并调用转换器对文件进行转换:
    1. String newFileName = null;  
    2.                    // 得到当前时间自1970年1月1日0时0秒开始流失的毫秒数,将这个毫秒数作为上传文件的文件名  
    3.                    long now = new Date().getTime();  
    4.                     
    5.                    // 得到保存上传文件的目录的真实路径  
    6.                    String path = ServletActionContext.getServletContext().getRealPath(uploadDir);  
    7.                   path=path.replace( '\\', '/' );  
    8.                   newFileName=now+agreement.getAgreeNum()+fileName.substring(fileName.lastIndexOf( "."));  
    9.                     
    10.                   File dir = new File(path);  
    11.                   dir.mkdirs();  
    12.                     
    13.                    //删除旧文件  
    14.                    if(!Stringer.isNullOrEmpty(agreement.getPath()))  
    15.                   {  
    16.                         File oldFile= new File(dir,agreement.getPath().substring(agreement.getPath().lastIndexOf("/")+1));  
    17.                          if(oldFile.exists())  
    18.                         {  
    19.                               oldFile.delete();  
    20.                         }  
    21.                   }  
    22.                     
    23.                     
    24.                   agreement.setPath(uploadDir+ "/"+newFileName);  
    25.                    agreementDao.saveAgreement(agreement);  
    26.                     
    27.                   BufferedOutputStream bos = null;  
    28.                   BufferedInputStream bis = null;  
    29.                    // 将上传的文件保存在本地目录  
    30.                   File newFile = null;  
    31.                    try {  
    32.                         FileInputStream fis = new FileInputStream(file);  
    33.                         bis = new BufferedInputStream(fis);  
    34.   
    35.                         newFile = new File(dir, newFileName);  
    36.                         FileOutputStream fos = new FileOutputStream(newFile);  
    37.                         bos = new BufferedOutputStream(fos);  
    38.   
    39.                          byte[] buf = new byte[1024];  
    40.                          int len = -1;  
    41.                          while ((len = bis.read(buf)) != -1) {  
    42.                               bos.write(buf, 0, len);  
    43.                         }  
    44.                           
    45.                   } catch (Exception e) {  
    46.                         e.printStackTrace();  
    47.                          throw new Exception();  
    48.                   } finally {  
    49.                          try {  
    50.                                if (null != bis)  
    51.                                     bis.close();  
    52.                                if (null != bos)  
    53.                                     bos.close();  
    54.                         } catch (Exception e) {  
    55.                               e.printStackTrace();  
    56.                                throw new Exception();  
    57.                         }  
    58.                   }  
    59.                   DocConverter d = new DocConverter(converfilename);   
    60.             d.conver();  
  • JSP页面预览文档
    1. <%@ page language= "java" contentType ="text/html; charset=UTF-8"  
    2.     pageEncoding="UTF-8" %>  
    3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >  
    4. <html>  
    5. <head>  
    6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
    7. <script type="text/javascript" src=" ${ctx}/js/flexpaper/jquery.js"></ script>  
    8. <script type="text/javascript" src=" ${ctx}/js/flexpaper/flexpaper_flash.js"></script >  
    9. <script type="text/javascript" src=" ${ctx}/js/flexpaper/flexpaper_flash_debug.js"></script >  
    10. <style type="text/css" media="screen">  
    11.                    html, body   { height:100%; }  
    12.                    body { margin :0; padding:0; overflow:auto ; }    
    13.                    #flashContent { display :none; }  
    14.         </style>  
    15.   
    16. <title> 文档在线预览系统 </title>  
    17. </head>  
    18. <body>  
    19.         <div style="text-align : center;width: 100%;" id= "c">  
    20.               <id= "viewerPlaceHolder" style="width :820px;height:650px;" ></a>  
    21.                
    22.               <script type="text/javascript" >  
    23.                    var width=$("#c" ).width();  
    24.                    var height=$(document).height();  
    25.                   $( "#viewerPlaceHolder").css("width" ,width*0.94+"px");  
    26.                   $( "#viewerPlaceHolder").css("height" ,height+"px");  
    27.                     $("#viewerPlaceHolder" ).css("padding-left",width*0.03+ "px");  
    28.                   $( "#viewerPlaceHolder").css("display" ,"block" );  
    29.                    var name="${param.name}" ;  
    30.                   name=name.substring(0, name.lastIndexOf( "."))+".swf" ;  
    31.                          var fp = new FlexPaperViewer(   
    32.                                      '${ctx}/swf/FlexPaperViewer',  
    33.                                      'viewerPlaceHolder', { config : {  
    34.                                      SwfFile : escape( '${ctx}/'+name),  
    35.                                      Scale : 1.0,  
    36.                                      ZoomTransition : 'easeOut',  
    37.                                      ZoomTime : 0.5,  
    38.                                      ZoomInterval : 0.2,  
    39.                                      FitPageOnLoad : false,  
    40.                                      FitWidthOnLoad : false,  
    41.                                      FullScreenAsMaxWindow : false,  
    42.                                      ProgressiveLoading : false,  
    43.                                      MinZoomSize : 0.2,  
    44.                                      MaxZoomSize : 5,  
    45.                                      SearchMatchAll : false,  
    46.                                      InitViewMode : 'SinglePage',  
    47.                                       
    48.                                      ViewModeToolsVisible : true,  
    49.                                      ZoomToolsVisible : true,  
    50.                                      NavToolsVisible : true,  
    51.                                      CursorToolsVisible : true,  
    52.                                      SearchToolsVisible : true,  
    53.                                       
    54.                                      localeChain: 'zh_CN'  
    55.                                      }});  
    56.               </script>              
    57.         </div>  
    58. </body>  
    59. </html>  
 
分享到:
评论

相关推荐

    openoffice+swftools+flexpaper在线预览文档

    标题 "openoffice+swftools+flexpaper在线预览文档" 涉及到的是一个技术解决方案,用于在Web环境中实现文档的在线预览。这个方案主要包括三个关键组件:OpenOffice、SwfTools和FlexPaper。 1. **OpenOffice**: ...

    Java+FlexPaper+swfTools_仿百度文库文档在线预览系统设计与实现

    ### Java+FlexPaper+swfTools_仿百度文库文档在线预览系统设计与实现 #### 关键技术点概述 本文档将详细阐述一个模仿百度文库文档在线预览系统的实现过程,该系统通过结合Java、FlexPaper和swfTools等技术手段,...

    java + openOffice + swfTools + flexpaper 实现的仿百度文库文档在线浏览(源码)

    鉴于网上找的在线浏览都略去了flexpaper ,于是自己花费几个小时完成了openOffice + swfTools + flexpaper 技术实现仿百度文库的在线浏览。功能已经实现,需要的自己下去优化一下,修改下openoffice和SWFTOOLS安装...

    Java实现文档在线预览demo(openoffice+swfTools+FlexPaper)

    - 使用JavaScript创建FlexPaper实例,传入之前准备好的配置文件,初始化文档预览。 5. **服务器端逻辑**: - 当用户请求预览一个文档时,服务器端接收到请求,根据文档类型选择合适的转换方法。 - 将转换后的...

    Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现.pdf

    ### Java+FlexPaper+swfTools 仿百度文库文档在线预览系统设计与实现 本文将详细介绍如何使用Java结合FlexPaper和swfTools技术来实现一个类似百度文库的文档在线预览系统。该系统的主要功能是允许用户在线浏览各种...

    java+flexpaper+swftools office转为swf

    Java结合FlexPaper、SWFTools和OpenOffice是一个常见的解决方案,用于将Microsoft Office文档转换为SWF格式,以便在Web上以交互式的方式展示。这个过程涉及到多个步骤和技术,以下是详细的解释: 1. **Java**: Java...

    Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现.docx

    根据提供的文档标题、描述、标签以及部分内容,本文将详细介绍如何使用Java、FlexPaper及swfTools来设计并实现一个类似于百度文库的文档在线预览系统。本系统旨在让用户能够在线预览各种类型的文档,无需下载或安装...

    java+swfTools+openoffice+FlexPaper在线阅读实例

    Java、SWFTools、OpenOffice 和 FlexPaper 是构建在线阅读平台的关键技术,它们共同作用于创建一个高效且用户友好的文档预览系统。这个实例主要关注如何将这些工具结合使用,为用户提供PDF、DOC等常见格式文档的在线...

    仿百度文库方案[openoffice.org 3+swftools+flexpaper]

    仿百度文库方案[openoffice.org 3+swftools+flexpaper]对于不会写的菜鸟可以在几分钟内入门,里面有现成的代码,并且有详细流程。内附完整完美安装包,让你不虚费力去四处寻找。(openoffice安装包过大这里我会给出...

    文库openoffice.org 3+swftools+flexpaper

    文库openoffice.org 3+swftools+flexpaper word ppt excel 等转为pdf 转为swf

    Java-FlexPaper-swfTools-仿百度文库文档在线预览系统设计与实现.docx

    本文主要介绍了使用 Java、FlexPaper 和 swfTools 实现在线文档预览系统的设计和实现。该系统可以将上传的文档(包括 ppt、word、excel、txt 等)转换为 flash 支持的 swf 文件,并使用 FlexPaper 插件实现在线播放...

    在线文档浏览(OppenOfiice+FlexPaper+swftools)

    本文主要探讨了三个关键工具:OpenOffice、FlexPaper和Swftools,它们共同构成了一个强大的免费在线文档预览解决方案。 首先,OpenOffice是一款开源的办公软件套件,它可以处理包括Microsoft Office格式在内的多种...

    openoffcie+swftools+flexpaper实现类似百度文库的阅读效果

    这里提到的技术栈“openoffcie+swftools+flexpaper”恰好提供了这样的解决方案。下面将详细阐述这三款工具及其在实现该目标中的作用。 首先,OpenOffice是一个开源的办公软件套件,它包含了处理文字处理、电子表格...

    java实现附件预览(openoffice+swftools+flexpaper)实例

    总的来说,通过OpenOffice、SWFTools和FlexPaper的结合,Java开发者可以构建一个功能完善的附件预览系统,使得用户能够在浏览器环境中安全、便捷地查看各种文档格式。这种方法不仅提高了用户体验,也减少了对服务器...

    java 实现office文档的在线预览

    需要下载的工具有:OpenOffice+flexpaper+swftools+jodcconverter * .启动OpenOffice的服务 * 1 win+R开启dos窗口 * 2 执行:cd C:\Program Files (x86)\OpenOffice 4\program * 3 执行:soffice -headless -...

    FlexPaper+swfTools仿文档在线阅读

    总结来说,"FlexPaper+swfTools仿文档在线阅读"是一种利用Java、OpenOffice、swfTools和FlexPaper等技术,将多种格式的文档转换并以交互式的方式在Web上展示的解决方案。它为用户提供了一个便捷、跨平台的在线阅读...

    java实现附件预览(openoffice+PDF.js)

    是对openoffice+swftools+flexpaper的升级版,减少一次swf文件转换,及flexpaper只能预览十页内容,原文:http://blog.csdn.net/z69183787/article/details/17468039 内附:openoffice安装文件+PDF.js+源码+使用说明...

    Java仿文库的基本方法(openoffice+swftools+flexPaper)

    利用openoffice、swftools和flexPaper可以实现从Office文件到PDF,再到SWF格式的转换,最终通过flexPaper库来在线展示这些文件。 首先,使用openoffice进行文档转换。OpenOffice是一个开源的办公软件套件,可以处理...

    java-flexpaper-swftools仿百度文库文档在线预览系统设计与实现.doc

    通过以上步骤,一个简单的Java FlexPaper SWFTools在线预览系统得以实现,有效地保护了文档的安全性,只提供预览功能,避免了直接下载可能带来的风险。这样的系统对于企业内部文档管理系统或在线教育平台尤其有用。

Global site tag (gtag.js) - Google Analytics