一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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模擬實現百度文檔在線瀏覽

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人在线免费视频 | 四虎comwww最新地址 | 精品视频免费在线 | 国产日日干 | 国产亚洲欧美在线中文bt天堂网 | 日韩毛片大全免费高清 | sao虎影院桃红视频在线观看 | 齐天大性之七仙女欲春迅雷链接 | 欧美zoosex| 91精品国产免费久久 | 美国xxnx| 干操网 | 亚洲AV无码乱码国产麻豆穿越 | 日本wwxx护士 | 国产精品久久久久久吹潮 | 国产精品久久国产精品99盘 | ai换脸杨颖被啪在线观看 | 好大好硬好湿好紧h | 4455在线| 色欲麻豆国产福利精品 | 国产成人精品日本亚洲网址 | 99国产国人青青视频在线观看 | 午夜精品久久久 | 亚洲午夜精品久久久久久人妖 | 青草视频在线观看免费资源 | 我和黑色丝袜班主任 | 国产成年人视频 | 国产福利一区二区在线精品 | 亚洲午夜精品久久久久久成年 | 超兴奋朋友的中文字幕下 | 久久精品国产免费 | 欧美成人免费tv在线播放 | yellow视频在线观看免费 | 91美女在线观看 | 亚洲黄视频在线观看 | 免费午夜影院 | 青青青国产在线 | 国产午夜永久福利视频在线观看 | 国产日韩欧美在线观看不卡 | 国产99精品免费视频看6 | 高清麻生希在线 |