国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

香港云服务器
服務器之家 - 編程語言 - JAVA教程 - 學習Java模擬實現百度文檔在線瀏覽

學習Java模擬實現百度文檔在線瀏覽

2019-12-30 14:04小夜的傳說 JAVA教程

這片文章介紹了如何使用Java模擬實現百度文檔在線瀏覽,文章思路清晰,需要的朋友可以參考下

這個思路是我參考網上而來,代碼是我實現。
采用Apache下面的OpenOffice將資源文件轉化為pdf文件,然后將pdf文件轉化為swf文件,用FlexPaper瀏覽。
ok,
A、下載OpenOffice (轉換資源文件)
B、下載JodConverter(調用OpenOffice)
C、下載Swftools(Pdf2Swf)
D、下載 FlexPaper(瀏覽swf文件)

下載之后,先別急安裝,請看完這篇博文

1、先看我們的MyEclipse工程結構
學習Java模擬實現百度文檔在線瀏覽

2、將我們下載下來的jodconverter-2.2.2.zip解壓之后將所有的jar文件拷貝到baiduDoc的lib下面去

學習Java模擬實現百度文檔在線瀏覽

3、在WebRoot下面新建FlexPaper文件夾,將解壓后的FlexPaper全部拷貝到FlexPaper中去

4、新建BaiDuServlet.java文件

?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
package com.baidu.util;
 
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ConnectException;
 
import javax.imageio.stream.FileImageInputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
 
/**
 * @Author:NuoYan
 * @Date:2015-2-2 下午2:24:58
 * TODO: 1、第一步,首先獲取到需要查看的文件
 *    2、第二部,將獲取的文件(doc,xls,txt,ppt,03/07版本轉化為PDF),這一步需要調用OpenOffice
 *    3、第三部,將資源文件轉換好的PDF文件轉換為swf文件,使用FlexPaperViewer.swf進行瀏覽查看
 */
public class BaiDuServlet extends HttpServlet {
  private File sourceFile;// 要轉化的源文件
  private File pdfFile;// pdf中間文件對象
  private File swfFile;// swf目標文件對象
  private String filePath;// 用來保存文件路徑
  private String fileName;// 不包括后綴名的文件名
 
  public File getSourceFile() {
    return sourceFile;
  }
 
  public void setSourceFile(File sourceFile) {
    this.sourceFile = sourceFile;
  }
 
  public File getPdfFile() {
    return pdfFile;
  }
 
  public void setPdfFile(File pdfFile) {
    this.pdfFile = pdfFile;
  }
 
  public File getSwfFile() {
    return swfFile;
  }
 
  public void setSwfFile(File swfFile) {
    this.swfFile = swfFile;
  }
 
  public String getFilePath() {
    return filePath;
  }
 
  public void setFilePath(String filePath) {
    this.filePath = filePath;
  }
 
  public String getFileName() {
    return fileName;
  }
 
  public void setFileName(String fileName) {
    this.fileName = fileName;
  }
 
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    String saveFileName = request.getParameter("savFile");
    System.out.println(saveFileName);
    String webPath = request.getRealPath("/");
    filePath = webPath + "reader\\" + saveFileName;
    fileName = filePath.substring(0, filePath.lastIndexOf("."));
    // 創建三個文件對象
    sourceFile = new File(filePath);
    pdfFile = new File(fileName + ".pdf");
    swfFile = new File(fileName + ".swf");
    System.out.println(pdfFile);
    System.out.println(swfFile);
    // 1、將源文件轉化為pdf格式文件
    src2pdf();
    try {
      // 2、將pdf文件轉化為swf文件
      pdf2swf();
    } catch (Exception e) {
      e.printStackTrace();
    }
    // 將轉化好的文件綁定到session上去
    request.getSession().setAttribute("swfName", swfFile.getName());
    System.out.println(swfFile.getName());
    // 重定向到預覽頁面
    response.sendRedirect(request.getContextPath() + "/reader/baseFile.jsp");
  }
 
  /**
   * @Author:NuoYan
   * @Date:2015-2-2 下午2:28:22 TODO://源文件轉化為PDF文件
   */
  private void src2pdf() {
    if (sourceFile.exists()) {
      // 如果不存在,需要轉份為PDF文件
      if (!pdfFile.exists()) {
        // 啟用OpenOffice提供的轉化服務
        OpenOfficeConnection conn = new SocketOpenOfficeConnection(8100);
        // 連接OpenOffice服務器
        try {
          conn.connect();
          // 建立文件轉換器對象
          DocumentConverter converter = new OpenOfficeDocumentConverter(
              conn);
          converter.convert(sourceFile, pdfFile);
          // 斷開鏈接
          conn.disconnect();
          System.out.println("轉換成功");
        } catch (ConnectException e) {
          e.printStackTrace();
        }
      } else {
        System.out.println("已經存在PDF文件,不需要在轉換??!");
      }
    } else {
      System.out.println("文件路徑不存在?。?!");
    }
 
  }
 
  /**
   * @Author:NuoYan
   * @Date:2015-2-2 下午2:28:32
   * @throws Exception
   * TODO:PDF轉化為SWF文件
   */
  private void pdf2swf() throws Exception {
    if (!swfFile.exists()) {
      if (pdfFile.exists()) {
        String command = "C:\\Pdf2swf\\pdf2swf.exe "
            + pdfFile.getPath() + " -o " + swfFile.getPath()
            + " -T 9";
        System.out.println("轉換命令:" + command);
        // Java調用外部命令,執行pdf轉化為swf
        Runtime r = Runtime.getRuntime();
        Process p = r.exec(command);
        System.out.println(loadStream(p.getInputStream()));
        System.out.println("swf文件轉份成功?。?!");
        System.out.println(swfFile.getPath());
      } else {
        System.out.println("不存在PDF文件");
      }
    }
 
  }
   
  private static String loadStream(InputStream in) throws Exception {
    int len = 0;
    in = new BufferedInputStream(in);
    StringBuffer buffer = new StringBuffer();
    while ((len = in.read()) != -1) {
      buffer.append((char) len);
    }
    return buffer.toString();
  }
 
}

5、修改index.jsp

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" import="java.util.*"pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>百度文庫在線預覽</title>
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0"
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
 </head>
 <body>
  <a href="<%=request.getContextPath()%>/BaiDuServlet?savFile=1234.xls">在線預覽</a>
 </body>
</html>

6、編寫baseFile.jsp文件

?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>在線閱讀</title>
<script type="text/javascript" src="../FlexPaper/js/flexpaper_flash.js"></script>
<style type="text/css">
html,body{height: 100%;}
body {
  margin: 0;padding: 0;overflow: auto;
}
#flashContent { display:none; }
</style>
</head>
<body>
<div style="position:absolute;left:10px;top:10px;">
      <a id="viewerPlaceHolder" style="width:1000px;height:480px;display:block"></a>
      <script type="text/javascript">
        var fp = new FlexPaperViewer(
             '../FlexPaper/FlexPaperViewer',
             'viewerPlaceHolder', { config : {
             SwfFile : escape('../reader/<%=(String)session.getAttribute("swfName")%>'),
             Scale : 0.6,
             ZoomTransition : 'easeOut',
             ZoomTime : 0.5,
             ZoomInterval : 0.2,
             FitPageOnLoad : true,
             FitWidthOnLoad : false,
             FullScreenAsMaxWindow : false,
             ProgressiveLoading : false,
             MinZoomSize : 0.2,
             MaxZoomSize : 5,
             SearchMatchAll : false,
             InitViewMode : 'Portrait',
             PrintPaperAsBitmap : false,
             
             ViewModeToolsVisible : true,
             ZoomToolsVisible : true,
             NavToolsVisible : true,
             CursorToolsVisible : true,
             SearchToolsVisible : true,
              
              localeChain: 'zh_CN'
             }});
      </script>
    </div>
 
</body>
</html>

注意baseFile.jsp中的代碼,不會你可以參考這里

學習Java模擬實現百度文檔在線瀏覽

/**************************************************************************************/

7、到這里就完成,需要注意的是:
(1)、swftools-2013-04-09-1007.exe文件安裝路徑不要太深,不然Java調用外部命令不能執行

(2)、

    學習Java模擬實現百度文檔在線瀏覽   

    2.1、紅色1標記路徑不能錯,我就犯這個錯誤了       
    2.2、紅色標記2還可以寫http://127.0.0.1:8080/baiduDoc/reader/...

(3)、啟動OpenOffice的命令,不是直接雙擊啟動的。官網啟動方式,使用cd命令打開安裝目錄!
安裝完openoffice后
A.安裝服務
cd C:\Program Files (x86)\OpenOffice4\program
這一步你可以看你的OpenOffice安裝哪里
執行
soffice -headless-accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
B.查看是否安裝成功
   2.1查看端口對應的pid
   netstat -ano|findstr "8100"
   2.2查看pid對應的服務程序名
   tasklist|findstr "ipd值"

效果圖示:

學習Java模擬實現百度文檔在線瀏覽

以上就是本文的全部內容,希望對大家的學習有所幫助。

延伸 · 閱讀

精彩推薦
365
主站蜘蛛池模板: 成人亚洲天堂 | 精品欧美一区二区三区久久久 | 一级欧美在线 | 中文字幕1区2区3区 亚洲欧美日韩精品久久亚洲区 | 日韩电影一区二区三区 | 久久亚洲欧美日韩精品专区 | 久久人人爽人人爽人人片亚洲 | www日韩| 日韩在线视频中文字幕 | 精品在线播放 | 在线播放视频一区 | 色狠狠久久av五月综合 | av网站免费 | 国产精品夜间视频香蕉 | 欧美日韩亚洲一区二区 | 国产一区二区欧美 | 激情婷婷| 51ⅴ精品国产91久久久久久 | 黄毛片网站 | 欧美一级全黄 | 亚洲一区二区在线播放 | 一区二区在线 | 狠狠se | av福利在线观看 | 女教师高潮叫床视频在线观看 | 精品久久久久久国产 | 久草电影网 | 欧美日韩激情在线 | 国产精品亚洲精品 | 在线成人免费电影 | 国产视频二区 | 亚洲精品欧美 | 亚洲福利网站 | 亚洲国产精品自拍视频 | 在线视频一区二区三区 | 日本末发育嫩小xxxx | 亚洲一区二区中文字幕 | 天堂欧美城网站网址 | 动漫精品一区二区 | 日韩欧美在线一区 | 在线天堂av |