zoukankan      html  css  js  c++  java
  • 在线查看的技术总结

    在线查看的效果可以和百度touban类似。技术如下:

    0、jar 导入jar包:jodconverter-2.2.2.jar & jodconverter-cli-2.2.2.jar

    --------------------------------------------------------------------------------

    1、action

    /**  *  */

    import java.io.File; import java.io.FileNotFoundException; import java.util.HashSet; import java.util.Set;

    import org.crm.dao.common.FileUploadItemDAO; import org.crm.modules.CentricDefaultActionSupport; import org.crm.modules.common.FileUploadItem; import org.crm.utils.DOC2SWFUtil; import org.crm.utils.system.CommonUtil; import org.crm.utils.system.Constants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller;

    import com.opensymphony.xwork2.ActionContext;

    /**  * @author sgh  *  */ @Controller("fileconvertAction") @Scope("request") public class FileConvertAction extends CentricDefaultActionSupport {    private static final long serialVersionUID = 1526802710363946274L;  /* 文件上传下载处理*/  @Autowired  private FileUploadItemDAO fileUploadItemDao;  private static final Set<String> supportedTypes;    private Long id;    public Long getId() {   return id;  }

     public void setId(Long id) {   this.id = id;  }

     static{   //pdf,zip,rar,doc,xls,xlsx,ppt,pptx,bmp,jpg,gif,pcx,psd,jpeg,png:允许上传的文件类型   supportedTypes = new HashSet<String>();   supportedTypes.add("doc");   supportedTypes.add("docx");   supportedTypes.add("xls");   supportedTypes.add("xlsx");   supportedTypes.add("ppt");   supportedTypes.add("pptx");   supportedTypes.add("pdf");   supportedTypes.add("jpg");   supportedTypes.add("gif");   supportedTypes.add("txt");     }

     public String queryFile(){   FileUploadItem fileItem = fileUploadItemDao.get(this.id);   String filepath = fileItem.getFilePath();   String suffix = fileItem.getFileExtension();      //在线显示的swf文件是否存在   File convertFile = new File(CommonUtil.strcat(Constants.FILE_UPLOAD_PATH,filepath+".swf"));      //判断待显示文件格式是否支持在线查看   String suffix_tmp = suffix.indexOf(".")==0?suffix.substring(1).toLowerCase():suffix.toLowerCase();   boolean supported = supportedTypes.contains(suffix_tmp);      //判断原文件是否存在   File orginFile = new File(CommonUtil.strcat(Constants.FILE_UPLOAD_PATH,filepath));      //启动文档转换线程   if(!convertFile.exists() && supported && orginFile.exists()){    new DOC2SWFUtil(CommonUtil.strcat(Constants.FILE_UPLOAD_PATH,filepath),suffix).start();   }      ActionContext.getContext().put("json","{convertFileExists:"+convertFile.exists()+",supported:"+supported     +",orginFileExists:"+orginFile.exists()+"}");      return AJAX;  }    public String getFile() throws FileNotFoundException{   FileUploadItem fileItem = fileUploadItemDao.get(this.id);   String filepath = fileItem.getFilePath()+".swf";   this.getDownloadInfo().setInputStream(filepath);   return "showfile";  }   }

    --------------------------------------------------------------------------------

    2、jsp

    ------------------------------------------------------------------------------------

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="org.crm.utils.system.*" %> <%@ include file="/templates/taglibs.jsp"%> <%  String pid = (String)request.getParameter("id"); %> <html> <head>  <style type="text/css" media="screen"> #flashContent {  display:none; } </style>

    <script type="text/javascript" src="./../javascript/flexpaper/swfobject/swfobject.js"></script> <script type="text/javascript"> if(window.addEventListener)  window.addEventListener('DOMMouseScroll', handleWheel, false); window.onmousewheel = document.onmousewheel = handleWheel;

    if (window.attachEvent)  window.attachEvent("onmousewheel", handleWheel);

    function handleWheel(event){  try{   if(!window.document.FlexPaperViewer.hasFocus()){return true;}   window.document.FlexPaperViewer.setViewerFocus(true);   window.document.FlexPaperViewer.focus();      if(navigator.appName == "Netscape"){    if (event.detail)     delta = 0;    if (event.preventDefault){     event.preventDefault();     event.returnValue = false;     }   }   return false;   }catch(err){return true;}   }

    </script>        <script type="text/javascript"> //       alert(basePath);         var swfVersionStr = "9.0.124";                var xiSwfUrlStr = "${expressInstallSwf}";         var flashvars = {               SwfFile : '${basePath}/flexpaper/fileconvert!getFile?id=<%=pid%>',    Scale : 0.6,    ZoomTransition : "easeOut",    ZoomTime : 0.5,      ZoomInterval : 0.1,      FitPageOnLoad : false,      FitWidthOnLoad : true,      PrintEnabled : false,      FullScreenAsMaxWindow : true,    ProgressiveLoading : true,      localeChain: "en_US"    };  var params = {       };          params.quality = "high";          params.bgcolor = "#ffffff";          params.allowscriptaccess = "sameDomain";          params.allowfullscreen = "true";          var attributes = {};          attributes.id = "FlexPaperViewer";          attributes.name = "FlexPaperViewer";          swfobject.embedSWF(              "FlexPaperViewer.swf", "flashContent",              "1000", "600",              swfVersionStr, xiSwfUrlStr,              flashvars, params, attributes);   swfobject.createCSS("#flashContent", "display:block;text-align:left;"); </script> </head>

    <body>          <div id="flashContent"> </div> </body>

    </html>

    -----------------------------------------------------------------------------------

    3、js 

    -----------------------------------------------------------------------------------

    function showFileOnline(id){
     $.post(basePath+"flexpaper/fileconvert!queryFile", { "id": id },
      function(data){
       //根据返回结果判断是否存在,存在则显示,否则给出转换提示
       var result = eval("("+data+")");
       if(result.convertFileExists){
        var baseUrl = basePath+"flexpaper/showfile.jsp?id="+id;
        window.showModalDialog(baseUrl,window,"dialogWidth=1024px;dialogHeight=768px;status=no;resizable=yes;location=no");
       }else if(!result.orginFileExists){
        alert("文件不存在");
       }else if(!result.supported){
        alert("文件格式不支持在线阅读");
       }else{
        alert("文档正在转换,请稍后进行查看");
       }
      }); 
    }

    ------------------------------------------------------------------------------------

    4、swf:flexPaperView.swf 一个flash文件。

    ---------------------------------------------

    5、在查看文件时调用js方法。

    ---------------------------------------

    完成。

    -----------===========================================

    安装openoffice的事情,可以直接在官网下载安装。配置path路径:path=c:\\program files\\openoffice;

    开启openoffice服务器:cmd---->soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

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

  • 相关阅读:
    DNS解析的并发性
    Pycharm(Jetbrains IDE)Debian buster Navigate Back/Forward (Ctrl+Alt+Left/Right)不好使的解决方法
    Linux命令行登录时的提示信息
    cmake编译Qt5
    cmake使用ccache
    bash 脚本所在文件夹
    gnome desktop
    gnome caps lock 和 num lock 键状态
    oracle 日期、月份处理
    独夜行
  • 原文地址:https://www.cnblogs.com/guanghuiqq/p/2748037.html
Copyright © 2011-2022 走看看