• Java实现在线预览功能


    java实现在线预览功能,需要用到  jacob.dll jacob.jar   预览pdf所需js  pdfobject.min.js

    将上传文件转为pdf保存。  

        <div class="control-group">
                <label class="control-label">文件:</label>
                <div class="controls">
                    <input  type="file" name="file" id="ck_attach_path" style="98%;"/>
                </div>
            </div>

    后台保存文件并将文件转换为pdf

        @RequiresPermissions("ha01:haHyjhb:edit")
        @RequestMapping(value = "save")
        public String save(HaHyjhb haHyjhb, @RequestParam MultipartFile file,Model model, RedirectAttributes redirectAttributes,HttpServletRequest request, HttpServletResponse response) throws IOException, ParseException {
            
                haHyjhb.setBh(hybh);
                
                String xdlj = request.getSession().getServletContext().getRealPath("userfiles")+"\hy"+haHyjhb.getLx()+"\"+dateStr+"\"+hybh+"\";
                
                String path = "";
                if(!file.isEmpty()){  
                    
                
                    HaHyzlb haHyzlb = new HaHyzlb();
                    SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式
                    String filename= df.format(new Date());    // 保存在服务器的随机文件名
                    
                    //材料编号
                    haHyzlb.setClhb(filename);
                    haHyzlb.setHybh(hybh);
                    
                    xdlj=xdlj.replaceAll("\\", "/");
                    haHyzlb.setLj(xdlj);
                    haHyzlb.setCllx("0");
                    
                    
                    
                    String aa[]=file.getOriginalFilename().split("[.]");
                    String fileName =filename+"."+aa[aa.length-1];
                    
                    
                    haHyzlb.setClywjm(file.getOriginalFilename());
                    haHyzlb.setClmc(fileName);
                    //保存文件
                    publicUtils.saveFile(file, xdlj,filename, request, response);
                    haHyzlbService.save(haHyzlb);
                
                }else{
                    request.setAttribute("msg", "未选择需上传的文件");
                }
                
                haHyjhbService.save(haHyjhb);
                addMessage(redirectAttributes, "保存会议计划成功");
            }
            
            return "redirect:"+Global.getAdminPath()+"/ha01/haHyjhb/?repage";
        }
    public static void saveFile(@RequestParam MultipartFile file,String xdlj,String filename, HttpServletRequest request, HttpServletResponse response) {
            
            
            String path = "";
            
            String pdfname= filename + ".pdf";    // 装换成pdf文件的名称
            String refilename= "";    // 上传文件的名称
            
            
            if(!file.isEmpty()){  
                //获取上传文件的原名称
                refilename=file.getOriginalFilename();
                String aa[]=refilename.split("[.]");
                filename=filename+"."+aa[aa.length-1];
                xdlj=xdlj.replaceAll("\\", "/");
                File fpath = new File(xdlj);
                
                if(!fpath.exists()){
                    fpath.mkdirs();
                }
                try {  
                    MultipartFile mfile = file; 
                    
                    if(mfile!=null){  
                        File localFile = new File(xdlj+filename); 
                        
                        path = localFile.getPath();
                        try {  
                            mfile.transferTo(localFile);//将上传文件写到服务器上指定的文件  
                            ToPDF top=new ToPDF();
                            top.convert2PDF(xdlj+filename, xdlj+pdfname);
                            
                        } catch (IllegalStateException e) {  
                            e.printStackTrace();  
                        } catch (IOException e) {  
                            e.printStackTrace();  
                        }  
                    }  
                } catch (Exception e) {  
                    e.printStackTrace();  
                    request.setAttribute("msg", refilename+"上传失败");  
                } 
            }  else{
                request.setAttribute("msg", "未选择需上传的文件");
            }
        }

    转换pdf工具类

    package com.thinkgem.jeesite.modules.bc.bc01.web;
    
    import java.io.File;
    
    import com.jacob.activeX.ActiveXComponent;
    import com.jacob.com.ComFailException;
    import com.jacob.com.ComThread;
    import com.jacob.com.Dispatch;
    
    public class ToPDF {
        private static final int wdFormatPDF = 17;
         private static final int xlTypePDF = 0;
         private static final int ppSaveAsPDF = 32;
         private static final int msoTrue = -1;
         private static final int msofalse = 0;
        
         /*jacob配置
          * 把jacob.dll放入 Javajdk1.5.0_06jrein目录下.
             把jacob.jar放入 Javajdk1.5.0_0jrelibext*/  
        //直接调用这个方法即可
            public boolean convert2PDF(String inputFile, String pdfFile) {
                String suffix =  getFileSufix(inputFile);
                File file = new File(inputFile);
                if(!file.exists()){
                    System.out.println("文件不存在!");
                    return false;
                }
                if(suffix.equals("pdf")){
                    System.out.println("PDF not need to convert!");
                    return false;
                }
                if(suffix.equals("doc")||suffix.equals("docx")||suffix.equals("txt")){
                    return word2PDF(inputFile,pdfFile);
                }else if(suffix.equals("ppt")||suffix.equals("pptx")){
                    return ppt2PDF(inputFile,pdfFile);
                }else if(suffix.equals("xls")||suffix.equals("xlsx")){
                    return excel2PDF(inputFile,pdfFile);
                }else{
                    System.out.println("文件格式不支持转换!");
                    return false;
                }
            }
            public static String getFileSufix(String fileName){
                int splitIndex = fileName.lastIndexOf(".");
                return fileName.substring(splitIndex + 1);
            }
            public boolean word2PDF(String inputFile,String pdfFile){
                 ActiveXComponent app = null;  
                 Dispatch doc = null;
                 boolean result=true;
                try{
                //打开word应用程序
                 app = new ActiveXComponent("Word.Application");
                //设置word不可见
                app.setProperty("Visible", false);
                //获得word中所有打开的文档,返回Documents对象
                Dispatch docs = app.getProperty("Documents").toDispatch();
                //调用Documents对象中Open方法打开文档,并返回打开的文档对象Document
                 doc = Dispatch.call(docs,
                                            "Open",
                                            inputFile,
                                            false,
                                            true
                                            ).toDispatch();
                
                Dispatch.call(doc,
                        "ExportAsFixedFormat",
                        pdfFile,
                        wdFormatPDF     //word保存为pdf格式宏,值为17
                        );
                
                result= true;
            }catch(Exception e){
                result= false;
            }finally {  
                if (doc != null) {  
                    Dispatch.call(doc, "Close");  
                }  
                if (app != null) {  
                    app.invoke("Quit");  
                }
            }
                return result;
            }
            
            public boolean excel2PDF(String inputFile,String pdfFile){
                 ActiveXComponent app = null;  
                 Dispatch excel = null;
                 boolean result=true;
                try{
                    app = new ActiveXComponent("Excel.Application");
                    app.setProperty("Visible", false);
                    Dispatch excels = app.getProperty("Workbooks").toDispatch();
                    excel = Dispatch.call(excels,
                                            "Open",
                                            inputFile,
                                            false,
                                            true
                                            ).toDispatch();
                Dispatch.call(excel,
                            "ExportAsFixedFormat",
                            xlTypePDF,      
                            pdfFile
                            );
                result= true;
            }catch(Exception e){
                result= false;
            }finally {  
                if (excel != null) {  
                    Dispatch.call(excel, "Close");  
                }  
                if (app != null) {  
                    app.invoke("Quit");  
                }  
            }  
                 return result;
            }
            
            public boolean ppt2PDF(String srcFilePath, String pdfFilePath){
                 ActiveXComponent app = null;  
                 Dispatch ppt = null;  
                 boolean result=true;
                     try {  
                         ComThread.InitSTA();  
                         app = new ActiveXComponent("PowerPoint.Application");  
                         Dispatch ppts = app.getProperty("Presentations").toDispatch();  
           
                         // 因POWER.EXE的发布规则为同步,所以设置为同步发布  
                         ppt = Dispatch.call(ppts, "Open", srcFilePath, true,// ReadOnly  
                                 true,// Untitled指定文件是否有标题  
                                 false// WithWindow指定文件是否可见  
                                 ).toDispatch();  
           
                         Dispatch.call(ppt, "SaveAs", pdfFilePath, 32); //ppSaveAsPDF为特定值32  
                         
                         result=true; // set flag true;  
                     } catch (ComFailException e) {  
                         result=false;  
                     } catch (Exception e) {  
                         result=false;  
                     } finally {  
                         if (ppt != null) {  
                             Dispatch.call(ppt, "Close");  
                         }  
                         if (app != null) {  
                             app.invoke("Quit");  
                         }  
                         ComThread.Release();  
                     }  
                     return result;
            }
    }

    预览文件

      <c:if test="${haHyjhb.cllist ne null and haHyjhb.cllist.size() ne 0}">
                </br ><h4>会议文件列表</h4></br >
                <table id="contentTable" class="table table-striped table-bordered table-condensed">
                    <thead>
                        <tr>
                            <th>文件名</th>
                            <th>预览</th>
                        </tr>
                    </thead>
                    <tbody>
                    <c:forEach items="${haHyjhb.cllist}" var="haHyjhb">
                        <tr>
                            <td>${haHyjhb.clywjm }</td>
                            <td><a href="javascript:void(0);" onclick="filescan('${haHyjhb.id}')">预览</a></td>
                        </tr>
                    </c:forEach>
                    </tbody>
                </table>
           </c:if>
    function filescan(fileid){
                top.$.jBox.open("iframe:${ctx}/ha01/haHyjhb/scan?id="+fileid, "文件预览",800,$(top.document).height()-100,{
                    buttons:{"确定":"ok", "关闭":true}, submit:function(v, h, f){
                        
                    }, loaded:function(h){
                        $(".jbox-content", top.document).css("overflow-y","hidden");
                    }, closed:function (){
                    }
                });
            }
    <%@ page contentType="text/html;charset=UTF-8" %>
    <%@ include file="/WEB-INF/views/include/taglib.jsp"%>
    <html>
    <head>
        <title>资料信息管理</title>
        
        <style type="text/css">
            html,body,#content{
                width: 100%;
                height: 100%;
                margin: 0;
                padding: 0;
            }
        </style>
        <script type="text/javascript">
         window.onload = function (){                                   //项目名称
             var filepath="${pageContext.request.contextPath}/"+"${saMyclbClxx.lj}".split("/dxzjzx_wz/")[1];
                var name="${saMyclbClxx.clmc}";
    
            
            var a=name.split(".");
            var hzm=a[a.length-1];//后缀名
            var wjm=name.split("."+hzm)[0];//文件名
            
            if(hzm=="txt"||hzm=="doc"||hzm=="docx"||hzm=="xls"||hzm=="xlsx"||hzm=="ppt"||hzm=="pptx"||hzm=="pdf"){
                filepath = filepath+wjm+".pdf";
                
                PDFObject.embed(filepath, "#content" );
                //var success = new PDFObject({ url:filepath ,pdfOpenParams: { scrollbars: '0', toolbar: '0', statusbar: '0'}}).embed("content1");
            }else if(hzm=="png"||hzm=="jpeg"||hzm=="gif"||hzm=="jpg"){
                $("#content").html("<img style='background-size:contain|cover;100%;height: auto;' src='"+filepath+name+"'  id='ylimg'/>");
            }else if(hzm=="wav"||hzm=="mp3"||hzm=="midi"||hzm=="wma"||hzm=="swf"||hzm=="flv"||hzm=="wmv"||hzm=="asf"||hzm=="asx"||hzm=="mid"||hzm=="rm"||hzm=="rmvb"||hzm=="mp4"||hzm=="mov"||hzm=="avi"||hzm=="ram"){
                $("#content").html("<video  src='"+filepath+name+"' controls='controls'></video>");
            }else{
                alert("该文件格式不支持预览");
            }
          } 
        </script>
    </head>
    <body>
        <ul class="nav nav-tabs">
        </ul><br/>
        <form:form id="inputForm" modelAttribute="saSqmyxxb" action="${ctx}/sa01/saSqmyxxb/save" method="post" class="form-horizontal">
            <sys:message content="${message}"/>        
             <div id="content"></div>   
        </form:form>
        
        <script type="text/javascript" src='${ctxStatic}/js/pdfobject.min.js'></script>
        
    </body>
    </html>
  • 相关阅读:
    No module named 'pydispatch'
    python 安装 vrml
    python3.7 安装pyopengl,环境搭建
    机智人 激光雷达 配置
    ubuntu server 16.04(amd 64) 配置网桥,多网卡使用激活
    ubuntu server 多网卡
    ubuntu16.04中开启和关闭防火墙
    c++ 判断给定区间是否是一个heap. O(N) (is_heap)
    c++ 判断容器A是否是容器B的子集,如果是,返回true(includes)
    c++ 容器元素填充指定数量的元素(generate_n)
  • 原文地址:https://www.cnblogs.com/yypr/p/10754941.html
Copyright © 2020-2023  润新知