首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 模擬百度文檔在線預覽:OpenOffice 轉 PDF + SwfTools 轉 SWF + FlexPaper 閱讀器完整棧

     編輯:Java 相關知識

實現文檔在線閱讀的經典路徑:Office → PDF → SWF → FlexPaper。本文基於 JodConverter 調用 OpenOffice 服務轉 PDF,SwfTools(pdf2swf) 轉 SWF,前端嵌入 FlexPaper 實現翻頁、縮放、搜索、全屏,提供完整 Servlet/JSP/配置指南,已驗證支援 doc/xls/ppt/txt 等格式。

技術棧與版本

  • OpenOffice 4.x(啟動服務:soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard)
  • JodConverter 2.2.2(含所有依賴 jar 放入 WEB-INF/lib)
  • SwfTools 2013-04-09(pdf2swf.exe 路徑勿過深,建議 C:\Pdf2swf\)
  • FlexPaper 2.x(解壓至 WebRoot/FlexPaper/)

核心 Servlet (BaiDuServlet.java)

// 1. Office → PDF
OpenOfficeConnection conn = new SocketOpenOfficeConnection(8100);
conn.connect();
DocumentConverter converter = new OpenOfficeDocumentConverter(converter);
converter.convert(sourceFile, pdfFile);
conn.disconnect();

// 2. PDF → SWF
String cmd = "C:\\Pdf2swf\\pdf2swf.exe " + pdfPath + " -o " + swfPath + " -T 9";
Runtime.getRuntime().exec(cmd); // 同步等待或異步輪詢

// 3. 重定向預覽頁
session.setAttribute("swfName", swfFile.getName());
response.sendRedirect("reader/baseFile.jsp");

預覽頁 (baseFile.jsp) 關鍵配置

var fp = new FlexPaperViewer(
    '../FlexPaper/FlexPaperViewer', 'viewerPlaceHolder', {
        config: {
            SwfFile: escape('../reader/' + swfName),
            Scale: 0.6, FitPageOnLoad: true,
            ZoomTransition: 'easeOut', ZoomTime: 0.5,
            localeChain: 'zh_CN' // 中文界面
        }
});

部署避坑指南

  1. OpenOffice 服務必須先啟動,驗證:netstat -ano | findstr 8100 見 PID,tasklist | findstr PID 見 soffice.bin。
  2. pdf2swf.exe 路徑不可包含空格、中文,否則 Runtime.exec 失敗。
  3. FlexPaper 的 SwfFile 路徑需與 Servlet 寫入目錄一致,建議用相對路徑 ../reader/。
  4. 大文件轉換耗時長,生產環境建議引入消息隊列異步處理,前端輪詢進度。

完整代碼已按 Maven 結構組織,可直接部署至 Tomcat 7+,快速構建企業級文檔預覽門戶。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved