實現文檔在線閱讀的經典路徑:Office → PDF → SWF → FlexPaper。本文基於 JodConverter 調用 OpenOffice 服務轉 PDF,SwfTools(pdf2swf) 轉 SWF,前端嵌入 FlexPaper 實現翻頁、縮放、搜索、全屏,提供完整 Servlet/JSP/配置指南,已驗證支援 doc/xls/ppt/txt 等格式。
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard)pdf2swf.exe 路徑勿過深,建議 C:\Pdf2swf\)// 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");
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' // 中文界面
}
});
netstat -ano | findstr 8100 見 PID,tasklist | findstr PID 見 soffice.bin。pdf2swf.exe 路徑不可包含空格、中文,否則 Runtime.exec 失敗。SwfFile 路徑需與 Servlet 寫入目錄一致,建議用相對路徑 ../reader/。完整代碼已按 Maven 結構組織,可直接部署至 Tomcat 7+,快速構建企業級文檔預覽門戶。