问题描述如图:
泛微自带的文档预览由于大小限制,所以很多文档都无法打开,除非买永中或者金山付费的在线预览服务做集成。 不过现在有很多开源的在线预览软件如 onlyoffice 等,也可以实现在线预览,所以只要跟泛微OA做点集成就可以了。
实现方法:
1、泛微OA开发文档下载接口,供onlyoffice下载到本地进行转换预览。
这一步进我原来的文章:泛微ECOLOGY9实现在不登录状态根据文档ID调用文档的接口实现
https://blog.csdn.net/dycp125/article/details/130950347
不过为了满足文档多附件时的下载调用,对代码做了一点修改,调整为根据 docid和imagefileid 获取文档,或者根据 docid 获取单附件文档,或者根据 imagefileid 直接获取图片。
代码如下:
import weaver.conn.RecordSet;
import weaver.file.ImageFileManager;
import weaver.general.BaseBean;
import weaver.general.Util;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.Null;
import java.io.*;
import java.net.URLEncoder;
import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
/** * 下载和在线打开PDF文件 * 使用说明 http://note.youdao.com/s/77miwS0Q */
public class FileServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("application/x-zip-compressed;charset=utf-8"); // 获取http传过来的参数
String docid = request.getParameter("docid");
String imageid = request.getParameter("imageid");
String method = "";
Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
String sql = "";
if(imageid !="" && imageid != null && docid !="" && docid !=null){
try {
if (!pattern.matcher(docid).matches()) {
docid = com.api.doc.detail.util.DocDownloadCheckUtil.DncodeFileid(docid);
}
} catch (Exception e) {
e.printStackTrace();
}
sql = " select docimagefile.imagefileid as imagefileid,filerealpath,imagefiletype,imagefile.imagefilename,iszip from imagefile,docimagefile "
+ " where imagefile.imagefileid =docimagefile.imagefileid and docimagefile.docid='" + docid + "' and docimagefile.imagefileid='"+imageid+"'";
}else if((imageid !="" && imageid !=null) && (docid =="" || docid == null)){
try {
if (!pattern.matcher(imageid).matches()) {
imageid = com.api.doc.detail.util.DocDownloadCheckUtil.DncodeFileid(imageid);
}
} catch (Exception e) {
e.printStackTrace();
}
sql = "select imagefileid,filerealpath,imagefiletype,imagefilename,iszip from imagefile "
+ " where imagefileid='" + imageid + "'";
}else if((imageid =="" || imageid ==null) && (docid !="" && docid != null)){
try {
if (!pattern.matcher(docid).matches()) {
docid = com.api.doc.detail.util.DocDownloadCheckUtil.DncodeFileid(docid);
}
} catch (Exception e) {
e.printStackTrace();
}
sql = " select docimagefile.imagefileid as imagefileid,filerealpath,imagefiletype,imagefile.imagefilename,iszip from imagefile,docimagefile "
+ " where imagefile.imagefileid =docimagefile.imagefileid and docimagefile.docid='" + docid + "'"