光辉飞翔

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

在线查看的效果可以和百度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

 

 

 

posted on   光辉飞翔  阅读(415)  评论(0编辑  收藏  举报
编辑推荐:
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
 
点击右上角即可分享
微信分享提示