欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

學(xué)習(xí)Java模擬實(shí)現(xiàn)百度文檔在線瀏覽

 更新時(shí)間:2015年07月30日 09:02:49   作者:小夜的傳說  
這片文章介紹了如何使用Java模擬實(shí)現(xiàn)百度文檔在線瀏覽,文章思路清晰,需要的朋友可以參考下

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

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

1、先看我們的MyEclipse工程結(jié)構(gòu)

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

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

4、新建BaiDuServlet.java文件

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版本轉(zhuǎn)化為PDF),這一步需要調(diào)用OpenOffice
 *    3、第三部,將資源文件轉(zhuǎn)換好的PDF文件轉(zhuǎn)換為swf文件,使用FlexPaperViewer.swf進(jìn)行瀏覽查看
 */
public class BaiDuServlet extends HttpServlet {
  private File sourceFile;// 要轉(zhuǎn)化的源文件
  private File pdfFile;// pdf中間文件對象
  private File swfFile;// swf目標(biāo)文件對象
  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("."));
    // 創(chuàng)建三個(gè)文件對象
    sourceFile = new File(filePath);
    pdfFile = new File(fileName + ".pdf");
    swfFile = new File(fileName + ".swf");
    System.out.println(pdfFile);
    System.out.println(swfFile);
    // 1、將源文件轉(zhuǎn)化為pdf格式文件
    src2pdf();
    try {
      // 2、將pdf文件轉(zhuǎn)化為swf文件
      pdf2swf();
    } catch (Exception e) {
      e.printStackTrace();
    }
    // 將轉(zhuǎn)化好的文件綁定到session上去
    request.getSession().setAttribute("swfName", swfFile.getName());
    System.out.println(swfFile.getName());
    // 重定向到預(yù)覽頁面
    response.sendRedirect(request.getContextPath() + "/reader/baseFile.jsp");
  }
 
  /**
   * @Author:NuoYan
   * @Date:2015-2-2 下午2:28:22 TODO://源文件轉(zhuǎn)化為PDF文件
   */
  private void src2pdf() {
    if (sourceFile.exists()) {
      // 如果不存在,需要轉(zhuǎn)份為PDF文件
      if (!pdfFile.exists()) {
        // 啟用OpenOffice提供的轉(zhuǎn)化服務(wù)
        OpenOfficeConnection conn = new SocketOpenOfficeConnection(8100);
        // 連接OpenOffice服務(wù)器
        try {
          conn.connect();
          // 建立文件轉(zhuǎn)換器對象
          DocumentConverter converter = new OpenOfficeDocumentConverter(
              conn);
          converter.convert(sourceFile, pdfFile);
          // 斷開鏈接
          conn.disconnect();
          System.out.println("轉(zhuǎn)換成功");
        } catch (ConnectException e) {
          e.printStackTrace();
        }
      } else {
        System.out.println("已經(jīng)存在PDF文件,不需要在轉(zhuǎn)換??!");
      }
    } else {
      System.out.println("文件路徑不存在?。。?);
    }
 
  }
 
  /**
   * @Author:NuoYan
   * @Date:2015-2-2 下午2:28:32
   * @throws Exception
   * TODO:PDF轉(zhuǎn)化為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("轉(zhuǎn)換命令:" + command);
        // Java調(diào)用外部命令,執(zhí)行pdf轉(zhuǎn)化為swf
        Runtime r = Runtime.getRuntime();
        Process p = r.exec(command);
        System.out.println(loadStream(p.getInputStream()));
        System.out.println("swf文件轉(zhuǎn)份成功?。。?);
        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

<%@ page language="java" import="java.util.*"pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>百度文庫在線預(yù)覽</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">在線預(yù)覽</a>
 </body>
</html>

6、編寫baseFile.jsp文件

<%@ 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中的代碼,不會你可以參考這里

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

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

(2)、

       

    2.1、紅色1標(biāo)記路徑不能錯(cuò),我就犯這個(gè)錯(cuò)誤了       
    2.2、紅色標(biāo)記2還可以寫http://127.0.0.1:8080/baiduDoc/reader/...

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

效果圖示:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • Java線程中斷及線程中斷的幾種使用場景小結(jié)

    Java線程中斷及線程中斷的幾種使用場景小結(jié)

    在并發(fā)編程中,合理使用線程中斷機(jī)制可以提高程序的魯棒性和可維護(hù)性,本文主要介紹了Java線程中斷及線程中斷的幾種使用場景小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 使用@Builder導(dǎo)致無法創(chuàng)建無參構(gòu)造方法的解決

    使用@Builder導(dǎo)致無法創(chuàng)建無參構(gòu)造方法的解決

    這篇文章主要介紹了使用@Builder導(dǎo)致無法創(chuàng)建無參構(gòu)造方法的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java OpenCV利用KNN算法實(shí)現(xiàn)圖像背景移除

    Java OpenCV利用KNN算法實(shí)現(xiàn)圖像背景移除

    這篇文章主要為大家介紹了Java OpenCV利用K最鄰近(KNN,K-NearestNeighbor)分類算法實(shí)現(xiàn)圖像背景移除的示例代碼,需要的可以參考一下
    2022-01-01
  • 談?wù)凥ashmap的容量為什么是2的冪次問題

    談?wù)凥ashmap的容量為什么是2的冪次問題

    這篇文章主要介紹了談?wù)凥ashmap的容量為什么是2的冪次問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • SpringBoot整合Mybatis與MybatisPlus方法詳細(xì)講解

    SpringBoot整合Mybatis與MybatisPlus方法詳細(xì)講解

    這篇文章主要介紹了SpringBoot整合Mybatis與MybatisPlus方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • 實(shí)戰(zhàn)分布式醫(yī)療掛號系統(tǒng)之設(shè)置微服務(wù)接口開發(fā)模塊

    實(shí)戰(zhàn)分布式醫(yī)療掛號系統(tǒng)之設(shè)置微服務(wù)接口開發(fā)模塊

    這篇文章主要為大家介紹了實(shí)戰(zhàn)分布式醫(yī)療掛號系統(tǒng)之接口開發(fā)醫(yī)院設(shè)置微服務(wù)模塊,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • Java 找不到或無法加載主類的修復(fù)方法

    Java 找不到或無法加載主類的修復(fù)方法

    這篇文章主要介紹了Java 找不到或無法加載主類的修復(fù)方法,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-02-02
  • 利用Java編寫一個(gè)出敬業(yè)福的小程序

    利用Java編寫一個(gè)出敬業(yè)福的小程序

    新年將至,又開始掃福活動,每年的敬業(yè)福成了大家難過的坎。所以本文將介紹一個(gè)通過Java編寫的一款福字生成器,感興趣的小伙伴可以試一試
    2022-01-01
  • Mybatis配置解析看這一篇就夠了

    Mybatis配置解析看這一篇就夠了

    這篇文章主要介紹了詳解Mybatis是如何解析配置文件的,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • JavaWeb中Servlet的深入講解

    JavaWeb中Servlet的深入講解

    這篇文章主要介紹了JavaWeb中Servlet的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評論