java根据模板生成,导出word和pdf(aspose.words实现word转换pdf)
相关一部分java文件和jar包
https://github.com/momodashen/words.git
pom文件
<dependency> <groupId>com.aspose</groupId> <artifactId>aspose-words</artifactId> <version>18.2</version> </dependency>
word模板 其中<forEach>的内容要在设置在表格里面
js导出方法
function f_export(){ var rowsdata = gridManager.getSelectedRow(); if (!rowsdata) { $.ligerDialog.alert('请先选择一行!'); return; } manwait = $.ligerDialog.waitting("正在导出,请稍候..."); var statDate = rowsdata.statDate; $.ajax({ type : "POST", url:'${ctx}/dp/schedulingLogQuery!exportView.action', data:$("#form").serializeArray(), dataType : "json", cache: false, success : f_success }); }
action代码
public void exportView(){ ISchedullingFetchMap fetchmap = (ISchedullingFetchMap) this.getMap(); fetchmap.generation(modelId,TimeUtil.parseDate(statDate), shiftId); Map<String, Object> map = new HashMap<>(); map.put("status", 200); JSONObject jsonObject = JSONObject.fromObject(map); ResponseUtil.print(jsonObject.toString()); }
map代码 生成words和pdf
public void generation(Long modelId, Date parseDate, Long shiftId) { List<Map<String, Object>> fetchList= this.findFetchs(modelId, parseDate, shiftId); Map<String, Object> varValues = new HashMap<String, Object>(); Model model = (Model) this.getPersistQuery().findById(Model.class, modelId); varValues.put("name", model.getModelName()); varValues.put("dateStr", parseDate); List<Map<String, Object>> fetchs = new ArrayList<>(); //varValues.put("fetchs", fetchList); for (Map<String, Object> map : fetchList) { Map<String, Object> map2 = new HashMap<String, Object>(); String content = map.get("demo").toString(); map2.put("demo", content); map2.put("fetchName", map.get("fetchName").toString()); fetchs.add(map2); } varValues.put("fetchs", fetchs); //根据msword报表模板生成msword String tmpFilename = ServletActionContext.getServletContext().getRealPath("/template/***.docx");//模板文件 //要导出文件 String workFilename = ServletActionContext.getServletContext().getRealPath("/reportWorkSpace/**********.docx"); Report report = new Report(); report.tmpFilename = tmpFilename; report.workFilename = workFilename; report.varValues = varValues; report.transformDOCX(); }
report.transformDOCX();实现根据模板转成word并转成pdf,html,xps,png等,该java文件可在上方连接获取
public void transformDOCX() { //载入模板文件 msword.report.Operate.load(this); //解析 msword.report.Operate.execute(this); //再替换没有匹配的${}为空字符 msword.report.Operate.scavengeSuperfluous(this); //保存工作文件 msword.report.Operate.save(this); //转换为pdf文件 aspose.Operate.convertasPdf(this); //转换为html文件 // aspose.Operate.convertasHtml(this); //转换为xps文件 // aspose.Operate.convertasXps(this); //转换为png文件 // aspose.Operate.convertasPng(this); }
分别下载word文件和pdf文件
<iframe align="middle" id="belowFrame" name="main" frameborder="0" scrolling="no" src="" width="99%" height="0" ></iframe>
//下载word function f_success(data){ if (data.status == 200) { //ligerUi提示 var manager = $.ligerDialog.tip({ title : '提示', content : '操作成功!' }); manwait.close(); setTimeout(function() { manager.close(); }, 3000); document.getElementById("belowFrame").contentWindow.location.href="${pageContext.request.contextPath}//reportWorkSpace/********.docx"; setTimeout(function() { parent.window.frames[thisTabId].f_closeWindow(); }, 100); } else { $.ligerDialog.closeWaitting(); $.ligerDialog.error(data.message); } }
//下载pdf function f_success(data){ if (data.status == 200) { //ligetUi提示 var manager = $.ligerDialog.tip({ title : '提示', content : '操作成功!' }); manwait.close(); //定时关闭提示 setTimeout(function() { manager.close(); }, 3000);
window.location.href='${ctx}/dp/schedulingLogQuery!exportPdfView.action'; setTimeout(function() { parent.window.frames[thisTabId].f_closeWindow(); }, 100); } else { $.ligerDialog.closeWaitting(); $.ligerDialog.error(data.message); } }
下载pdf后台代码
public void exportPdfView(){ HttpServletRequest request = ServletActionContext.getRequest(); String TEMPLATE_FILE = "/reportWorkSpace/*******.pdf"; String templatePath1 = BaseService.getInstance().getRealPath(TEMPLATE_FILE); File file=new File(templatePath1); String fileName=file.getName(); String agent=(String)request.getHeader("USER-AGENT"); //判断浏览器类型 try { if(agent!=null && agent.indexOf("Fireforx")!=-1) { fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1"); //UTF-8编码,防止输出文件名乱码 } else { fileName=URLEncoder.encode(fileName,"UTF-8"); } } catch (Exception e) { e.printStackTrace(); } OutputStream os=null; HttpServletResponse response = ServletActionContext.getResponse(); response.reset(); response.setCharacterEncoding("utf-8"); response.setContentType("application/pdf"); // pdf格式 response.setHeader("Content-Disposition", "attachment; filename=" + fileName); try { BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file)); byte[] b=new byte[bis.available()+1000]; int i=0; os = response.getOutputStream(); //直接下载导出 while((i=bis.read(b))!=-1) { os.write(b, 0, i); } os.flush(); os.close(); } catch (IOException e) { e.printStackTrace(); }finally { if(os!=null) { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } }