导出PDF

    技术2025-12-05  10

    1.前端
    /** * 导出消毒安全操作表 */ function exportTable() { var row = $('#archviesDisinfectionTask_selectMission_dg').datagrid('getSelected'); if(row){ window.open(basePath + "sterilize/exportPDF?batchSterilizer="+row.batchSterilizer); }else{ $.messager.alert('警告','请先选择要导出的记录','info'); } }
    2.后端-制作表格
    public void exportSecurityTableForPdf(String batchSterilizer,HttpServletResponse response) throws Exception{ //加载Excel文档 Workbook workbook = new Workbook(); Worksheet sheet = workbook.getWorksheets().get(0); //合并单元格范围A1到J1 sheet.getRange().get("A1:J1").merge(); sheet.getCellRange("A1").setText("消毒安全操作表"); sheet.getCellRange("A1").getCellStyle().getExcelFont().setSize(16); //设置加粗 sheet.getCellRange("A1").getCellStyle().getExcelFont().isBold(true); //水平居中 sheet.getCellRange("A1").getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center); //自动换行 sheet.getCellRange("A1").getCellStyle().setWrapText(true); //设置行高 sheet.getCellRange("A1:J1").setRowHeight(25); //设置名称 sheet.getCellRange("A2").setText("日期"); // sheet.getCellRange("A2").getCellStyle().getExcelFont().setFontName("Comic Sans MS"); sheet.getCellRange("B2").setText("档案编号"); sheet.getCellRange("C2").setText("消毒开始时间(40分钟)"); sheet.getCellRange("D2").setText("消毒结束时间"); sheet.getCellRange("E2").setText("消毒浓度(0.2mg/m³)"); sheet.getCellRange("F2").setText("分解臭氧开始时间(20分钟)"); sheet.getCellRange("G2").setText("分解臭氧结束时间"); sheet.getCellRange("H2").setText("分解后臭氧浓度(oppm)"); sheet.getCellRange("I2").setText("操作员"); sheet.getCellRange("J2").setText("负责人"); List<InventoryCheckAccpet> listtList = inventoryCheckAccpetRepository.securityTable(batchSterilizer); SterilizeInformationRoom sterilizeInformationRoom = sterilizeInformationRoomRepository.securityTable(batchSterilizer); int i = 0; for ( i = 0; i < listtList.size(); i++) { LocalDateTime dateTime = listtList.get(i).getEnterSterilizerRoom(); if (dateTime==null) { sheet.getCellRange("A"+(i+3)+"").setText(""); }else { DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String localTime = df.format(dateTime); sheet.getCellRange("A"+(i+3)+"").setText(localTime); } sheet.getCellRange("B"+(i+3)+"").setText(listtList.get(i).getArchivesChestNo()); if (sterilizeInformationRoom!=null) { sheet.getCellRange("C"+(i+3)+"").setText(sterilizeInformationRoom.getSterilizeBeginTime()+""); sheet.getCellRange("D"+(i+3)+"").setText(sterilizeInformationRoom.getSterilizeEndTime()+""); sheet.getCellRange("E"+(i+3)+"").setText(sterilizeInformationRoom.getConcentration()); sheet.getCellRange("F"+(i+3)+"").setText(sterilizeInformationRoom.getOzenBenginTime()+""); sheet.getCellRange("G"+(i+3)+"").setText(sterilizeInformationRoom.getOzenEndTime()+""); sheet.getCellRange("H"+(i+3)+"").setText(sterilizeInformationRoom.getAfterOzen()); sheet.getCellRange("I"+(i+3)+"").setText(sterilizeInformationRoom.getOperator()); sheet.getCellRange("J"+(i+3)+"").setText(sterilizeInformationRoom.getPrincipal()); } } i = i+2; //水平居中 sheet.getCellRange("A2:J"+i).getCellStyle().setHorizontalAlignment(HorizontalAlignType.Center); //自动换行 sheet.getCellRange("A2:J"+i).getCellStyle().setWrapText(true); //获取需要设置边框的单元格范围 CellRange cr = sheet.getCellRange(sheet.getFirstRow(), sheet.getFirstColumn(), sheet.getLastRow(), sheet.getLastColumn()); //设置边框样式 cr.getBorders().setLineStyle(LineStyleType.Thin); cr.getBorders().getByBordersLineType(BordersLineType.DiagonalDown).setLineStyle(LineStyleType.None); cr.getBorders().getByBordersLineType(BordersLineType.DiagonalUp).setLineStyle(LineStyleType.None); cr.getBorders().setColor(Color.BLACK); //将第四列的列宽设为20 String fileName = "消毒安全操作表("+batchSterilizer+").pdf"; //调用方法保存为PDF格式 workbook.saveToFile(fileName,FileFormat.PDF); //读取d盘的file1文件 // File file = new File("d:/ToPDF.pdf"); //读取指定路径下面的文件 InputStream in = new FileInputStream(fileName); //创建存放文件内容的数组 byte[] buff =new byte[1024]; //所读取的内容使用n来接收 int n; // 清空response response.reset(); // 设置response的Header response.setContentType("application/octet-stream"); response.setHeader("Content-disposition", "attachment;filename=" +java.net.URLEncoder.encode(fileName, "UTF-8")); response.flushBuffer(); //当没有读取完时,继续读取,循环 OutputStream ouputStream = new BufferedOutputStream(response.getOutputStream()); while((n=in.read(buff))!=-1){ //将字节数组的数据全部写入到输出流中 ouputStream.write(buff,0,n); } //强制将缓存区的数据进行输出 ouputStream.flush(); //关流 ouputStream.close(); in.close(); deleteFile(fileName); } /** * 删除文件 * * @param pathname * @return * @throws IOException */ public static boolean deleteFile(String pathname){ boolean result = false; File file = new File(pathname); System.out.println(file.getAbsolutePath()); if (file.exists()) { file.delete(); result = true; System.out.println("文件已经被成功删除"); } return result; }
    3.效果图

    Processed: 0.009, SQL: 9