在线预览
jsp文件:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- 引入Java公共资源 --%>
<%@include file="../../portal/common/top_system_bs.jsp"%>
<link rel="stylesheet" href="<%=path %>/css/portal/module_bs/iconUpload_bs.css?time=<%=time %>" />
<script type="text/javascript" src='<%=path %>/library/documentpreview/flexpaper.js'></script>
<script type="text/javascript" src='<%=path %>/library/documentpreview/flexpaper_flash.js'></script>
<script type="text/javascript" src='<%=path %>/library/documentpreview/flexpaper_flash_debug.js'></script>
<script type="text/javascript" src="<%=path%>/js/kms/knowledgeSerch/documentPreview_bs.js?time=<%=time%>"></script>
<%-- <link rel="stylesheet" href="<%=path%>/css/kms/typeCategorycenter/typeCategorycenter_bs.css?time=<%=time%>" type="text/css"> --%>
<jsp:include page="../../portal/common/top_ie8_bs.jsp"></jsp:include>
</head>
<body>
<div class="Loading_file" id="file_Loading-Img">
<input type="hidden" id="fileId" value="${fileId}">
<input type="hidden" id="fileName" value="${fileName}">
<img src="<%=path%>/images/common/iconImages/loading001.gif" />
</div>
<div id="documentViewer" class="flexpaper_viewer" style="width:100%;height:100%">
</div>
</body>
</html>
js文件
$(function(){
filePreview($("#fileId").val(),$("#fileName").val());
})
function filePreview(id,name){
debugger
var api = frameElement.api, w = api.opener;
var d=name.substring(name.lastIndexOf('.')+1, name.length).toLowerCase();
$("#file_Loading-Img").show();// 隐藏 等待框
if(name=="doc"||name=="docx" ||name=="pdf"){
debugger
$.ajax({
type:"POST",
url: _path+"/kms/fileupload/filetranscoding",
data:{
fileId:id,
fileName:name,
radom:Math.random()
},
success:function(data){
$("#file_Loading-Img").hide();// 隐藏 等待框
if(data!=''){
// $('#documentViewer').FlexPaperViewer(
var fp = new FlexPaperViewer(
_path+'/pages/kms/filedom/FlexPaperViewer',
'documentViewer',
{ config : {
// SWFFile : _path+'/upload/'+data,
SwfFile : escape(_path+'/upload/'+data),
Scale : 0.6,
ZoomTransition : 'easeOut',
ZoomTime : 0.5,
ZoomInterval : 0.2,
FitPageOnLoad : true,
FitWidthOnLoad : false,
PrintEnabled : true,
FullScreenAsMaxWindow : false,
ProgressiveLoading : false,
MinZoomSize : 0.2,
MaxZoomSize : 5,
SearchMatchAll : false,
InitViewMode : 'Portrait',
ViewModeToolsVisible : true,
ZoomToolsVisible : true,
NavToolsVisible : true,
CursorToolsVisible : true,
SearchToolsVisible : true,
// localeChain: 'en_US'
localeChain: 'zh_CN'
}}
);
}else{
alert("预览失败");
$("#file_Loading-Img").hide();// 隐藏 等待框
api.close();
}
}
});
}else{
alert("该文件不支持预览");
$("#file_Loading-Img").hide();// 隐藏 等待框
api.close();
}
}
后台配置
package com.srrc.kms.util.swf;
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;
import com.srrc.common.util.SystemBusinessCode;
/**
* doc docx格式转换
*/
public class DocConverter {
private static final int environment =Integer.parseInt(SystemBusinessCode.getSystemBusinessValue("ENVIRONMENT_TYPE"));// 环境 1:windows 2:linux
private String fileString;// (只涉及pdf2swf路径问题)
private String outputPath = "";// 输入路径 ,如果不设置就输出在默认的位置
private String fileName;
private File pdfFile;
private File swfFile;
private File docFile;
private String swfName;
public String getSwfName() {
return swfName;
}
public void setSwfName(String swfName) {
this.swfName = swfName;
}
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()+ "****");
if(pdfFile.exists())
docFile.delete();
} 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
*/
@SuppressWarnings("unused")
private void pdf2swf() throws Exception {
Runtime r = Runtime.getRuntime();
if (!swfFile.exists()) {
if (pdfFile.exists()) {
if (environment == 1) {// windows环境处理
try {
Process p = r.exec("C:/SWFTools/pdf2swf.exe "+ pdfFile.getPath() + " -o "+ swfFile.getPath() + " -T 9 -f");
System.out.print(loadStream(p.getInputStream()));
System.err.print(loadStream(p.getErrorStream()));
System.out.print(loadStream(p.getInputStream()));
System.err.println("****swf转换成功,文件输出:"
+ swfFile.getPath() + "****");
swfName=swfFile.getName();
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();
}
/**
* 转换主方法
*/
@SuppressWarnings("unused")
public boolean conver() {
if (swfFile.exists()) {
System.out.println("****swf转换器开始工作,该文件已经转换为swf****");
swfName=swfFile.getName();
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()) {
swfName=swfFile.getName();
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");
}
}
}
}
后台调用转换
@RequestMapping("/filetranscoding")
public void fileTranscoding(HttpServletResponse resp,HttpServletRequest request,FileStoreVo fileInfo) throws IOException{
String fileId=fileInfo.getFileId();
KnowledgeMain knowledgeMain=fileManageService.findKnowledgeMain(fileId);
FilesInfo info=fileManageService.findFileInfo(knowledgeMain.getFileId());
String suffix="";
int pos = knowledgeMain.getTitle().lastIndexOf('.');
if (pos > 0 && pos < knowledgeMain.getTitle().length() - 1) {
suffix = knowledgeMain.getTitle().substring(pos + 1);
}
String Md5fileName=Md5Util.getMd5(knowledgeMain.getTitle()+DateUtil.getSysDateByYYYYMMddHHmmss())+"."+suffix;
String sc = request.getServletContext().getResource("/").getPath()+"upload/";
boolean downflag=RIDCRevision.downLocalFile(sc, info.getUrl(), Md5fileName);
if(downflag){
DocConverter d = new DocConverter(sc+Md5fileName);
//调用conver方法开始转换,先执行doc2pdf()将office文件转换为pdf;再执行pdf2swf()将pdf转换为swf;
boolean flag= d.conver();
//生成swf相对路径,以便传递给flexpaper播放器
String swfName="";
if(flag){
swfName=d.getSwfName();
}
AjaxHelper.printString(resp, swfName);
}else{
AjaxHelper.printString(resp, "");
}
}
注意事项