在线预览实现

1. 在线播放

  jsp中:

   <embed
                                src="<%=path%>/${accessory.url}"
                                _fcksavedurl="<%=path%>/${accessory.url}"
                                type="application/x-mplayer3"
                                loop="true"
                                ShowStatusBar="true"
                                autostart="true"
                                tarttime="00:10"
                                ShowPositionControls="false"
                                EnableContextMenu="false"
                                palette="red|blue"
                                height="68"
                                width="100%" />


2. 在线预览

工具:

1、SWF显示组件 flexpaper  下载地址 http://flexpaper.devaldi.com/

2、DOC文件转换为PDF文件 openoffice3.2

3、PDF文件转换SWF文件  pdf2swf.exe

4、实现在java类中操作openoffice3.2 的类包  jodconverter-2.2.2


代码:

import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
  
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;
  
/**
  * doc docx格式转换
 
  * @author Administrator
 
  */
public class DocConverter {
     private static final int environment = 1 ; // 环境 1:windows 2:linux
                                                 // (只涉及pdf2swf路径问题)
     private String fileString;
     private String outputPath = "" ; // 输入路径 ,如果不设置就输出在默认的位置
     private String fileName;
     private File pdfFile;
     private File swfFile;
     private File docFile;
  
     public DocConverter(String fileString) {
         ini(fileString);
     }
  
     /**
      * 重新设置file
     
      * @param fileString
      */
     public void setFile(String fileString) {
         ini(fileString);
     }
  
     /**
      * 初始化
     
      * @param fileString
      */
     private void ini(String fileString) {
         this .fileString = fileString;
         fileName = fileString.substring( 0 , fileString.lastIndexOf( "." ));
         docFile = new File(fileString);
         pdfFile = new File(fileName + ".pdf" );
         swfFile = new File(fileName + ".swf" );
     }
  
     /**
      * 转为PDF
     
      * @param file
      */
     private void doc2pdf() throws Exception {
         if (docFile.exists()) {
             if (!pdfFile.exists()) {
                 OpenOfficeConnection connection =newSocketOpenOfficeConnection(
                        8100);
                try{
                    connection.connect();
                    DocumentConverter converter =newOpenOfficeDocumentConverter(
                            connection);
                    converter.convert(docFile, pdfFile);
                     // close the connection
                     connection.disconnect();
                     System.out.println( "****pdf转换成功,PDF输出:" + pdfFile.getPath()
                             + "****" );
                 } catch (java.net.ConnectException e) {
                     e.printStackTrace();
                     System.out.println( "****swf转换器异常,openoffice服务未启动!****" );
                     throw e;
                 } catch (com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException e) {
                     e.printStackTrace();
                     System.out.println( "****swf转换器异常,读取转换文件失败****" );
                     throw e;
                 } catch (Exception e) {
                     e.printStackTrace();
                     throw e;
                 }
             } else {
                 System.out.println( "****已经转换为pdf,不需要再进行转化****" );
             }
         } else {
             System.out.println( "****swf转换器异常,需要转换的文档不存在,无法转换****" );
         }
     }
  
     /**
      * 转换成 swf
      */
     private void pdf2swf() throws Exception {
         Runtime r = Runtime.getRuntime();
         if (!swfFile.exists()) {
             if (pdfFile.exists()) {
                 if (environment == 1 ) { // windows环境处理
                     try {
                         Process p = r.exec( "D:/pdf2swf.exe " + pdfFile.getPath() + " -o " + swfFile.getPath() + " -T 9" );
                         System.out.print(loadStream(p.getInputStream()));
                         System.err.print(loadStream(p.getErrorStream()));
                         System.out.print(loadStream(p.getInputStream()));
                         System.err.println( "****swf转换成功,文件输出:"
                                 + swfFile.getPath() + "****" );
                         if (pdfFile.exists()) {
                             pdfFile.delete();
                         }
  
                     } catch (IOException e) {
                         e.printStackTrace();
                         throw e;
                     }
                 } else if (environment == 2 ) { // linux环境处理
                     try {
                         Process p = r.exec( "pdf2swf " + pdfFile.getPath()
                                 + " -o " + swfFile.getPath() + " -T 9" );
                         System.out.print(loadStream(p.getInputStream()));
                         System.err.print(loadStream(p.getErrorStream()));
                         System.err.println( "****swf转换成功,文件输出:"
                                 + swfFile.getPath() + "****" );
                         if (pdfFile.exists()) {
                             pdfFile.delete();
                         }
                     } catch (Exception e) {
                         e.printStackTrace();
                         throw e;
                     }
                 }
             } else {
                 System.out.println( "****pdf不存在,无法转换****" );
             }
         } else {
             System.out.println( "****swf已经存在不需要转换****" );
         }
     }
  
     static String loadStream(InputStream in) throws IOException {
  
         int ptr = 0 ;
         in = new BufferedInputStream(in);
         StringBuffer buffer = new StringBuffer();
  
         while ((ptr = in.read()) != - 1 ) {
             buffer.append(( char ) ptr);
         }
  
         return buffer.toString();
     }
  
     /**
      * 转换主方法
      */
     public boolean conver() {
  
         if (swfFile.exists()) {
             System.out.println( "****swf转换器开始工作,该文件已经转换为swf****" );
             return true ;
         }
  
         if (environment == 1 ) {
             System.out.println( "****swf转换器开始工作,当前设置运行环境windows****" );
         } else {
             System.out.println( "****swf转换器开始工作,当前设置运行环境linux****" );
         }
         try {
             doc2pdf();
             pdf2swf();
         } catch (Exception e) {
             e.printStackTrace();
             return false ;
         }
  
         if (swfFile.exists()) {
             return true ;
         } else {
             return false ;
         }
     }
  
     /**
      * 返回文件路径
     
      * @param s
      */
     public String getswfPath() {
         if (swfFile.exists()) {
             String tempString = swfFile.getPath();
             tempString = tempString.replaceAll( "\\\\" , "/" );
             return tempString;
         } else {
             return "" ;
         }
  
     }
  
     /**
      * 设置输出路径
      */
     public void setOutputPath(String outputPath) {
         this .outputPath = outputPath;
         if (!outputPath.equals( "" )) {
             String realName = fileName.substring(fileName.lastIndexOf( "/" ),
                     fileName.lastIndexOf( "." ));
             if (outputPath.charAt(outputPath.length()) == '/' ) {
                 swfFile = new File(outputPath + realName + ".swf" );
             } else {
                 swfFile = new File(outputPath + realName + ".swf" );
             }
         }
     }
  
     public static void main(String s[]) {
         DocConverter d = new DocConverter( "D:/1.doc" );
         d.conver();
     }
}

 

启动openoffice:

C:\Program Files\OpenOffice.org 3\program  soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" –nofirststartwizard

 如果出现问题,可以尝试不使用 –nofirststartwizard

附件: windows 查看端口是否启动

                  netstat -ano |findstr "端口号"

使用flexpaper显示生成的swf文件

需要的文件:

 


以及jquery的相关js

需要在web中启动:

html代码

<!doctype html>
<html>
<head>
    <title>FlexPaper</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1,user-scalable=no,maximum-scale=1,width=device-width" />
    <style type="text/css" media="screen">
        html, body    { height:100%; }
        body { margin:0; padding:0; overflow:auto; }
        #flashContent { display:none; }
    </style>

    <link rel="stylesheet" type="text/css" href="css/flexpaper.css" />
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/flexpaper.js"></script>
    <script type="text/javascript" src="js/flexpaper_handlers.js"></script>
    
<script type="text/javascript">
window.οnlοad=function(){
var startDocument = "Paper";

    $('#documentViewer').FlexPaperViewer(
            { config : {

                SWFFile : '201409110848499719.swf',

                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',
                RenderingOrder : 'flash',
                StartAtPage : '',

                ViewModeToolsVisible : true,
                ZoomToolsVisible : true,
                NavToolsVisible : true,
                CursorToolsVisible : true,
                SearchToolsVisible : true,
                WMode : 'window',
                localeChain: 'en_US'
            }}
    );
};
 
</script>
</head>
<body>
<div style="position:absolute;left:10px;top:10px;">
<div id="documentViewer" class="flexpaper_viewer" style="width:770px;height:500px"></div>
</div>
</body>
</html>


 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值