国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
最詳細(xì)的文件在線預(yù)覽(openoffice+swftools+flexpaper)

最詳細(xì)的文件在線預(yù)覽(openoffice+swftools+flexpaper)

1.1    本人使用的都是最新的軟件包,版本見(jiàn)下圖:

1.2    已經(jīng)支持加載中文文件名

1.3    代碼下載

1.概述

主要原理

1.通過(guò)第三方工具openoffice,將word、excel、ppt、txt等文件轉(zhuǎn)換為pdf文件

2.通過(guò)swfToolspdf文件轉(zhuǎn)換成swf格式的文件

3.通過(guò)FlexPaper文檔組件在頁(yè)面上進(jìn)行展示

2.安裝包下載

1.openoffice是Apache下的一個(gè)開(kāi)放免費(fèi)的文字處理軟件

 下載版本:4.1.0

  下載地址:http://www.openoffice.org/zh-cn/download/

2.SWFTools是一組用來(lái)處理Flash的swf文件的工具包,我們使用它將pdf文件轉(zhuǎn)成swf文件!

下載版本:swftools-2013-04-09-1007

  下載地址:http://www.swftools.org/download.html

 

3.FlexPaper是一個(gè)開(kāi)源輕量級(jí)的在瀏覽器上顯示各種文檔的組件

  下載地址:FlexPaper官網(wǎng)下載

 

4.JODConverter一個(gè)Java的OpenDocument文件轉(zhuǎn)換器,在此我們只用到它的jar包

   下載地址:JODCConverter下載

 

3.安裝文件

1.將所下載的文件(JODConverter除外)進(jìn)行安裝,盤符可隨自己設(shè)定!需要注意的是在openoffice安裝完成后,當(dāng)我們使用它時(shí),需將它的服務(wù)打開(kāi)。在次我們需要以命令的方式打開(kāi):

打開(kāi)dos窗口,進(jìn)入openoffice安裝盤符,輸入以下代碼來(lái)啟動(dòng)服務(wù):

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

注意最后一個(gè)命令前邊的‘—’,可不要寫錯(cuò)!服務(wù)起不來(lái),項(xiàng)目可是繼續(xù)不下去的哦.

官網(wǎng)啟動(dòng)服務(wù)截圖如下:

本地截圖:

 

3.開(kāi)發(fā)過(guò)程

1.新建項(xiàng)目,將flexpaper文件中的js文件夾(包含了flexpaper_handlers.js,flexpaper.js,jquery.extensions.min.js, jquery.min.js, three.min.js這五個(gè)js文件主要是預(yù)覽swf文件的插件)拷貝至網(wǎng)站根目錄下的js文件夾;locale文件夾拷貝到根目錄下,把css文件夾拷貝到根目錄下,將FlexPaperViewer.swf拷貝至網(wǎng)站根目錄下(該文件主要是用在網(wǎng)頁(yè)中播放swf文件的播放器),目錄結(jié)構(gòu)如下圖:

 

注:jar包去下載的文件的lib目錄下找. DocConverter類方法 pdf2swf()中pdf2swf命令的路徑要根據(jù)實(shí)際值配置。

2.創(chuàng)建fileUpload.jsp

<%@ pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> 

    <!DOCTYPEhtml PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

    <html> 

    <head> 

    <metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"> 

    <title>文檔在線預(yù)覽系統(tǒng)</title> 

    <style> 

        body {margin-top:100px;background:#fff;font-family:Verdana, Tahoma;} 

        a {color:#CE4614;} 

        #msg-box {color:#CE4614;font-size:0.9em;text-align:center;} 

        #msg-box.logo {border-bottom:5px solid #ECE5D9;margin-bottom:20px;padding-bottom:10px;} 

        #msg-box.title {font-size:1.4em;font-weight:bold;margin:0 0 30px 0;} 

        #msg-box.nav {margin-top:20px;} 

    </style> 

     

    </head> 

    <body> 

    <divid="msg-box"> 

        <formname="form1" method="post"enctype="multipart/form-data"action="docUploadConvertAction.jsp"> 

            <divclass="title"> 

                請(qǐng)上傳要處理的文件,過(guò)程可能需要幾分鐘,請(qǐng)稍候片刻。 

            </div> 

            <p> 

                <inputname="file1"type="file"> 

            </p> 

            <p> 

                <inputtype="submit"name="Submit"value="上傳"> 

            </p> 

        </form> 

    </div> 

    </body> 

    </html> 

 

3.創(chuàng)建轉(zhuǎn)換頁(yè)docUploadConvertAction.jsp

    <%@page language="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%> 

    <%@pageimport="java.io.*"%> 

    <%@pageimport="java.util.Enumeration"%> 

    <%@pageimport="com.oreilly.servlet.MultipartRequest"%> 

    <%@pageimport="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%> 

    <%@pageimport="com.cectsims.util.DocConverter"%> 

    <% 

    //文件上傳采用cos組件上傳,可更換為commons-fileupload上傳,文件上傳后,保存在upload文件夾 

    //獲取文件上傳路徑 

    String saveDirectory=application.getRealPath("/")+"upload"

    //String saveDirectory="D:\\upload"; 

    //打印上傳路徑信息 

   System.out.println(saveDirectory); 

    //每個(gè)文件最大50m 

    int maxPostSize = 50 * 1024 * 1024; 

    //采用cos缺省的命名策略,重名后加1,2,3...如果不加dfp重名將覆蓋 

    DefaultFileRenamePolicy dfp =new DefaultFileRenamePolicy(); 

    //response的編碼為"UTF-8",同時(shí)采用缺省的文件名沖突解決策略,實(shí)現(xiàn)上傳,如果不加dfp重名將覆蓋 

    MultipartRequest multi = new MultipartRequest(request,saveDirectory, maxPostSize,"UTF-8",dfp); 

    //MultipartRequest multi = newMultipartRequest(request, saveDirectory, maxPostSize,"UTF-8"); 

    //輸出反饋信息 

     Enumeration files =multi.getFileNames(); 

         while (files.hasMoreElements()) { 

           String name =(String)files.nextElement(); 

           File f =multi.getFile(name); 

           if(f!=null){ 

             String fileName =multi.getFilesystemName(name); 

             //獲取上傳文件的擴(kuò)展名 

             StringextName=fileName.substring(fileName.lastIndexOf(".")+1); 

             //文件全路徑 

             String lastFileName=saveDirectory+"\\" + fileName; 

             //獲取需要轉(zhuǎn)換的文件名,將路徑名中的'\'替換為'/' 

             String converfilename =saveDirectory.replaceAll("\\\\","/")+"/"+fileName; 

             System.out.println(converfilename); 

             //調(diào)用轉(zhuǎn)換類DocConverter,并將需要轉(zhuǎn)換的文件傳遞給該類的構(gòu)造方法 

             DocConverter d = new DocConverter(converfilename); 

             //調(diào)用conver方法開(kāi)始轉(zhuǎn)換,先執(zhí)行doc2pdf()office文件轉(zhuǎn)換為pdf;再執(zhí)行pdf2swf()pdf轉(zhuǎn)換為swf; 

             d.conver(); 

             //調(diào)用getswfPath()方法,打印轉(zhuǎn)換后的swf文件路徑 

            System.out.println(d.getswfPath()); 

             //生成swf相對(duì)路徑,以便傳遞給flexpaper播放器 

             String swfpath = "upload"+d.getswfPath().substring(d.getswfPath().lastIndexOf("/")); 

            System.out.println(swfpath); 

             //將相對(duì)路徑放入sessio中保存 

             session.setAttribute("swfpath", swfpath); 

             out.println("上傳的文件:"+lastFileName); 

             out.println("文件類型"+extName); 

             out.println("<hr>"); 

           } 

         } 

     

    %> 

    <!DOCTYPEhtml PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

    <html> 

    <head> 

    <metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"> 

    <title>Insert title here</title> 

    <style> 

        body {margin-top:100px;background:#fff;font-family:Verdana, Tahoma;} 

        a {color:#CE4614;} 

        #msg-box {color:#CE4614;font-size:0.9em;text-align:center;} 

        #msg-box.logo {border-bottom:5px solid #ECE5D9;margin-bottom:20px;padding-bottom:10px;} 

        #msg-box.title {font-size:1.4em;font-weight:bold;margin:0 0 30px 0;} 

        #msg-box.nav {margin-top:20px;} 

    </style> 

    </head> 

    <body> 

        <div> 

            <formname="viewForm"id="form_swf"action="documentView.jsp"method="POST"> 

                <inputtype='submit'value='預(yù)覽'class='BUTTON SUBMIT'/> 

            </form> 

        </div> 

    </body> 

    </html> 

 

4.創(chuàng)建查看頁(yè)documentView.jsp

    <%@page language="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%> 

<!doctypehtml>

<html>

<head>

    <title>FlexPaper AdaptiveUI</title>

    <metahttp-equiv="Content-Type"content="text/html; charset=utf-8" />

    <metacontent="IE=Edge"http-equiv="X-UA-Compatible"></meta>

    <metaname="viewport"content="initial-scale=1,user-scalable=no,maximum-scale=1,width=device-width"/>

    <styletype="text/css"media="screen">

        html,body{height:100%; }

        body {margin:0;padding:0;overflow:auto; }

        #flashContent {display:none; }

    </style>

 

    <linkrel="stylesheet"type="text/css"href="css/flexpaper.css"/>

    <scripttype="text/javascript"src="js/jquery.min.js"></script>

    <scripttype="text/javascript"src="js/jquery.extensions.min.js"></script>

    <!--[ifgte IE 10 | !IE]><!-->

    <scripttype="text/javascript"src="js/three.min.js"></script>

    <!--<![endif]-->

    <scripttype="text/javascript"src="js/flexpaper.js"></script>

    <scripttype="text/javascript"src="js/flexpaper_handlers.js"></script>

</head>

<body>

<%

 String swfpath =(String)session.getAttribute("swfpath"); 

%>

<divid="documentViewer"class="flexpaper_viewer"style="position:absolute;left:10px;top:10px;"></div>

 

<scripttype="text/javascript">

 

    var startDocument ="Paper";

 

    $('#documentViewer').FlexPaperViewer(

            { config : {

                     //傳入的swfpath路徑必須是相對(duì)路徑,如果是絕對(duì)路徑,可以建立虛擬目錄,在TOMCAT中建虛擬目錄,要在server.xmlhost中添加context,如:

                     //<host><ContextcrossContext="true" docBase="C:/Users/dimeng/fileStore"path="/fileStore" reloadable="false"/></host>

                     //C:/Users/dimeng/fileStore是我文件的根目錄 /fileStore訪問(wèn)文件的虛擬路徑

                     //如:通過(guò)/fileStore/10/2015/9/22/11.pdf訪問(wèn)C:/Users/dimeng/fileStore/10/2015/9/22/11.pdf

                    SWFFile :escape('<%=swfpath%>'), 

                Scale : 0.6,

                ZoomTransition :'easeOut',

                ZoomTime : 0.5,

                ZoomInterval : 0.1,

                FitPageOnLoad : true,

                FitWidthOnLoad :false,

               FullScreenAsMaxWindow :false,

                ProgressiveLoading :false,

                MinZoomSize : 0.2,

                MaxZoomSize : 5,

                SearchMatchAll :false,

                InitViewMode : 'TwoPage',//默認(rèn)雙頁(yè)

                //InitViewMode : 'Portrait',//單頁(yè)

                RenderingOrder :'flash,html',

                StartAtPage : '',

 

                EnableWebGL : true,

                ViewModeToolsVisible:true,

                ZoomToolsVisible :true,

                NavToolsVisible :true,

                CursorToolsVisible :true,

                SearchToolsVisible :true,

                WMode : 'transparent',

                localeChain: 'zh_CN'

            }}

    );

</script>

 

</body>

</html>

5.創(chuàng)建轉(zhuǎn)換類DocConverter.java

package com.cectsims.util; 

import java.io.BufferedInputStream;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

 

import com.artofsolving.jodconverter.DocumentConverter;

import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;

importcom.artofsolving.jodconverter.openoffice.connection.OpenOfficeException;

importcom.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;

import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;

 

/**

 * doc docx格式轉(zhuǎn)換

 */ 

publicclass DocConverter { 

    privatestaticfinalintenvironment = 1;// 環(huán)境 1windows 2:linux 

    private StringfileString;// (只涉及pdf2swf路徑問(wèn)題

    private StringoutputPath ="";//輸入路徑,如果不設(shè)置就輸出在默認(rèn)的位置 

    private StringfileName

    private FilepdfFile

    private FileswfFile

    private FiledocFile

     

    public DocConverter(StringfileString) { 

        ini(fileString); 

    } 

 

    /**

     * 重新設(shè)置file

    

     * @param fileString

     */ 

    publicvoid setFile(StringfileString) { 

        ini(fileString); 

    } 

 

    /**

     * 初始化

    

     * @param fileString

     */ 

    privatevoid ini(StringfileString) { 

        this.fileString =fileString

        fileName =fileString.substring(0,fileString.lastIndexOf(".")); 

        docFile =new File(fileString); 

        pdfFile =new File(fileName +".pdf"); 

        swfFile =new File(fileName +".swf"); 

    } 

     

    /**

     * 轉(zhuǎn)為PDF

    

     * @param file

     */ 

    privatevoid doc2pdf()throws Exception { 

        if (docFile.exists()) { 

            if (!pdfFile.exists()) { 

                OpenOfficeConnectionconnection =newSocketOpenOfficeConnection(8100); 

                try

                    connection.connect(); 

                   DocumentConverterconverter = new OpenOfficeDocumentConverter(connection); 

                    converter.convert(docFile,pdfFile); 

                    // close the connection 

                    connection.disconnect(); 

                    System.out.println("****pdf轉(zhuǎn)換成功,PDF輸出:" + pdfFile.getPath()+"****"); 

                } catch (java.net.ConnectExceptione) { 

                    e.printStackTrace(); 

                    System.out.println("****swf轉(zhuǎn)換器異常,openoffice服務(wù)未啟動(dòng)!****"); 

                    throwe

                } catch (OpenOfficeExceptione) { 

                    e.printStackTrace(); 

                    System.out.println("****swf轉(zhuǎn)換器異常,讀取轉(zhuǎn)換文件失敗****"); 

                    throwe

                } catch (Exceptione) { 

                    e.printStackTrace(); 

                    throwe

                } 

            } else

                System.out.println("****已經(jīng)轉(zhuǎn)換為pdf,不需要再進(jìn)行轉(zhuǎn)化****"); 

            } 

        } else

            System.out.println("****swf轉(zhuǎn)換器異常,需要轉(zhuǎn)換的文檔不存在,無(wú)法轉(zhuǎn)換****"); 

        } 

    } 

     

    /**

     * 轉(zhuǎn)換成 swf

     */ 

    @SuppressWarnings("unused"

    privatevoid pdf2swf()throws Exception { 

        Runtime r = Runtime.getRuntime(); 

        if (!swfFile.exists()) { 

            if (pdfFile.exists()) { 

                if (environment == 1) {// windows環(huán)境處理 

                    try

                        Process p = r.exec("D:/install/swftool/pdf2swf.exe"+pdfFile.getPath() +" -o "+ swfFile.getPath() + " -f -T  9 "); 

                        //Process p =r.exec("D:\\install\\swftool\\pdf2swf.exe "+"D:\\upload\\33.pdf" + " -o "+ "D:\\upload\\33.swf"+ " -f -T 9 "); 

                        loadStream(p.getInputStream()); 

                        //System.err.print(loadStream(p.getErrorStream()));

                        System.out.println("****swf轉(zhuǎn)換成功,文件輸出:" 

                                + swfFile.getPath() +"****"); 

/*                        if (pdfFile.exists()){ 

                           pdfFile.delete(); 

                        }  */

 

                    } catch (IOExceptione) { 

                        e.printStackTrace(); 

                        throwe

                    } 

                } elseif (environment == 2) {// linux環(huán)境處理 

                    try

                        Process p = r.exec("pdf2swf " +pdfFile.getPath() 

                                + " -o " + swfFile.getPath() +" -f -T  9 "); 

                        loadStream(p.getInputStream()); 

                        //System.err.print(loadStream(p.getErrorStream())); 

                        System.out.println("****swf轉(zhuǎn)換成功,文件輸出:" 

                                + swfFile.getPath() +"****"); 

/*                        if(pdfFile.exists()) { 

                           pdfFile.delete(); 

                        }  */

                    } catch (Exceptione) { 

                        e.printStackTrace(); 

                        throwe

                    } 

                } 

            } else

                System.out.println("****pdf不存在,無(wú)法轉(zhuǎn)換****"); 

            } 

        } else

            System.out.println("****swf已經(jīng)存在不需要轉(zhuǎn)換****"); 

        } 

    } 

 

    static String loadStream(InputStreamin) throws IOException { 

 

        intptr = 0; 

        in =new BufferedInputStream(in); 

        StringBuffer buffer = new StringBuffer(); 

 

        while ((ptr =in.read()) != -1) { 

            buffer.append((char)ptr); 

        } 

 

        returnbuffer.toString(); 

    } 

    /**

     * 轉(zhuǎn)換主方法

     */ 

    @SuppressWarnings("unused"

    publicboolean conver() { 

 

        if (swfFile.exists()) { 

            System.out.println("****swf轉(zhuǎn)換器開(kāi)始工作,該文件已經(jīng)轉(zhuǎn)換為swf****"); 

            returntrue

        } 

 

        if (environment == 1) { 

            System.out.println("****swf轉(zhuǎn)換器開(kāi)始工作,當(dāng)前設(shè)置運(yùn)行環(huán)境windows****"); 

        } else

            System.out.println("****swf轉(zhuǎn)換器開(kāi)始工作,當(dāng)前設(shè)置運(yùn)行環(huán)境linux****"); 

        } 

        try

            doc2pdf(); 

            pdf2swf(); 

        } catch (Exceptione) { 

            e.printStackTrace(); 

            returnfalse

        } 

 

        if (swfFile.exists()) { 

            returntrue

        } else

            returnfalse

        } 

    } 

 

    /**

     * 返回文件路徑

    

     * @param s

     */ 

    public String getswfPath() { 

        if (swfFile.exists()) { 

            String tempString = swfFile.getPath(); 

            tempString =tempString.replaceAll("\\\\","/"); 

            returntempString

        } else

            return""

        } 

 

    } 

    /**

     * 設(shè)置輸出路徑

     */ 

    publicvoid setOutputPath(StringoutputPath) { 

        this.outputPath =outputPath

        if (!outputPath.equals("")) { 

            String realName = fileName.substring(fileName.lastIndexOf("/"), 

                    fileName.lastIndexOf(".")); 

            if (outputPath.charAt(outputPath.length()) == '/') { 

                swfFile =new File(outputPath +realName + ".swf"); 

            } else

                swfFile =new File(outputPath +realName + ".swf"); 

            } 

        } 

    } 

   

    publicstaticvoid main(String[]args) {

         DocConverterd =new DocConverter("D:\\upload\\33.pdf");

         try {

                     d.pdf2swf();

              } catch (Exceptione) {

                     //TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

 

6.部署發(fā)布

啟動(dòng)tomcat,部署當(dāng)前web應(yīng)用

地址欄輸入http://localhost:8080/ctcesims/documentUpload.jsp如下圖:

單擊選擇文件,選擇您要上傳的文檔,然后單擊上傳,處理完成后,打印如下信息,如下圖所示:

單擊預(yù)覽按鈕,就會(huì)生成預(yù)覽界面,如下圖:

 

4.常見(jiàn)問(wèn)題

若出現(xiàn)swf無(wú)法預(yù)覽,請(qǐng)?jiān)L問(wèn)

http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.html#119065

將生成swf的文件夾設(shè)置為信任文件位置。

 

1.4    若文件目錄與項(xiàng)目目錄不在一起,可將附件目錄在服務(wù)器中設(shè)置為虛擬目錄

TOMCAT中建虛擬目錄,要在server.xmlhost中添加context,如:

<host><Context crossContext="true"docBase="C:/Users/dimeng/fileStore" path="/fileStore"reloadable="false"/></host>

C:/Users/dimeng/fileStore是我文件的根目錄 /fileStore訪問(wèn)文件的虛擬路徑

如:通過(guò)/fileStore/10/2015/9/22/11.pdf訪問(wèn)C:/Users/dimeng/fileStore/10/2015/9/22/11.pdf

 

1.5    最后,若需要去除打印功能及logo,可重新編譯 flexpaper flash文件,網(wǎng)上也有下載

FlexPaper參數(shù)

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
!!!!! 仿百度文庫(kù)實(shí)現(xiàn)文檔在線預(yù)覽
零基礎(chǔ)!小白也可以開(kāi)發(fā)自己的小程序!
Java+FlexPaper+swfTools仿百度文庫(kù)文檔在線預(yù)覽系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
絕對(duì)路徑與相對(duì)路徑全解析
前端使用pdf.js預(yù)覽pdf文件
kkFIleView實(shí)現(xiàn)在線預(yù)覽文件的功能(windows環(huán)境
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服