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 = new SocketOpenOfficeConnection(
8100 );
try {
connection.connect();
DocumentConverter converter = new OpenOfficeDocumentConverter(
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>