首先下载pdfjs:
https://hub.fastgit.org/mozilla/pdf.js
然后下载里边的东西;
前端:
function setpreview(fileno) {
window.open('${path}/bower/pdfJs/web/viewer.html?file=${path}/protect.file/getPdfPreView/'+fileno,'PDF','width:50%;height:50%;top:100;left:100;');
}
后端:
@Get
public void getPdfPreView() {
try {
File file = null;
HttpServletRequest request = getRequest();
StringBuffer requestURL = request.getRequestURL();
KnowledgeFilesDao knowledgeFilesDao = KnowledgeFilesDao.get();
String fileNo = StringUtils.substringAfterLast(requestURL.toString(), "/");
//查询到这条知识实体;
KnowledgeFilesEntity knowledgeNameByFileNo = knowledgeFilesDao.getKnowledgeNameByFileNo(fileNo);
//如果是本地文件,则获取路径进行判断;
if (StringUtils.isNotBlank(knowledgeNameByFileNo.getFilePath())) {
String filePath = knowledgeNameByFileNo.getFilePath();
String[] fileNames = StringUtils.split(filePath, "\\");
if (fileNames.length == 1) {
fileNames = StringUtils.split(filePath, "/");
}
String fileLastName = fileNames[fileNames.length - 2] + "/" + fileNames[fileNames.length - 1];
//当前用户上传下载文件夹
String realPath = getRequest().getServletContext().getRealPath("WEB-INF\\upload") + "/" + fileLastName;
realPath = StringUtils.replace(realPath, "\\", "/");
// 判断文件是否具有pdf水印文件,如果有不参与加水印转换;
File waterPdf = getWaterPdf(realPath);
if (waterPdf!=null){
file=waterPdf;
}else {
//如果是pdf文件,则进行加水印,否则转化后加水印
if (StringUtils.equals("pdf", StringUtils.substringAfterLast(fileLastName, "."))) {
file= UploadedFileLogic.pdfAddWaterMark(realPath);
}else {
//如果不是pdf文件,则进行转换后加水印;
File pdfFile=UploadedFileLogic.pdfToOfficeReturnFileNotItem(realPath);
file=UploadedFileLogic.pdfAddWaterMark(pdfFile.getAbsolutePath());
}
}
}else {
String realPath=getRequest().getServletContext().getRealPath("WEB-INF\\upload")+"/"+getLoginedUser().getLoginUser().getUserKey();
realPath = StringUtils.replace(realPath, "\\", "/");
//如果是流文件,则转化为pdf后进行预览
file= UploadedFileLogic.inputToPdfFile(knowledgeNameByFileNo.getFileBinary(),realPath,knowledgeNameByFileNo.getFileName());
}
FileInputStream fileInputStream = new FileInputStream(file);
HttpServletResponse response = getResponse();
String fileName= URLEncoder.encode(StringUtils.split(knowledgeNameByFileNo.getFileName(),".")[0],"UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment;fileName="+fileName+".pdf");
// response.setContentType("text/html");
response.setContentType("multipart/form-data;charset=UTF-8");
OutputStream outputStream = response.getOutputStream();
IOUtils.write(IOUtils.toByteArray(fileInputStream), outputStream);
outputStream.flush();
outputStream.close();
} catch (Exception e) {
}
}