|  |  | 
 |  |  | import com.ruoyi.common.utils.QueryWrappers; | 
 |  |  | import com.ruoyi.common.utils.SecurityUtils; | 
 |  |  | import com.ruoyi.framework.exception.ErrorException; | 
 |  |  | import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; | 
 |  |  | import com.ruoyi.process.mapper.ProcessReportMapper; | 
 |  |  | import com.ruoyi.process.pojo.ProcessReport; | 
 |  |  | import com.ruoyi.process.service.ProcessReportService; | 
 |  |  | import com.ruoyi.system.mapper.UserMapper; | 
 |  |  | import org.apache.commons.io.IOUtils; | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  | import org.apache.poi.xwpf.usermodel.*; | 
 |  |  | import org.springframework.beans.factory.annotation.Value; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  |  | 
 |  |  | import javax.annotation.Resource; | 
 |  |  | import javax.servlet.http.HttpServletResponse; | 
 |  |  | import java.io.*; | 
 |  |  | import java.net.URLEncoder; | 
 |  |  | import java.nio.file.Files; | 
 |  |  | import java.nio.file.Paths; | 
 |  |  | import java.util.ArrayList; | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public String exportProcessReport() { | 
 |  |  |         List<ProcessReport> processReports = processReportMapper.selectList(null); | 
 |  |  |         for (ProcessReport processReport : processReports) { | 
 |  |  |             List<String> name = new ArrayList<>(); | 
 |  |  |             for (String s : processReport.getSignatory().split(",")) { | 
 |  |  |                 User user = userMapper.selectById(Integer.parseInt(s)); | 
 |  |  |                 name.add(user.getName()); | 
 |  |  |             } | 
 |  |  |             String signatoryName = name.stream().collect(Collectors.joining(",")); | 
 |  |  |             processReport.setSignatoryName(signatoryName); | 
 |  |  |         } | 
 |  |  |         //生成检验报告发放登记表 | 
 |  |  |         String url; | 
 |  |  |         try { | 
 |  |  |             InputStream inputStream = this.getClass().getResourceAsStream("/static/report-deal.docx"); | 
 |  |  |             File file = File.createTempFile("temp", ".tmp"); | 
 |  |  |             OutputStream outputStream = new FileOutputStream(file); | 
 |  |  |             IOUtils.copy(inputStream, outputStream); | 
 |  |  |             url = file.getAbsolutePath(); | 
 |  |  |         } catch (FileNotFoundException e) { | 
 |  |  |             throw new ErrorException("找不到模板文件"); | 
 |  |  |         } catch (IOException e) { | 
 |  |  |             throw new RuntimeException(e); | 
 |  |  |         } | 
 |  |  |         ConfigureBuilder builder = Configure.builder(); | 
 |  |  |         builder.useSpringEL(true); | 
 |  |  |  | 
 |  |  |         List<Map<String, Object>> reportList = new ArrayList<>(); | 
 |  |  |         Integer index = 1; | 
 |  |  |         Integer index1 = 1; | 
 |  |  |         for (int c = 0; c < processReports.size(); c++) { | 
 |  |  |             //超过15行换页 | 
 |  |  |             if (c % 15 == 0) { | 
 |  |  |                 List<RowRenderData> rows = new ArrayList<>(); | 
 |  |  |                 //表格的行数 | 
 |  |  |                 for (int i = 0; i < 16; i++) { | 
 |  |  |                     RowRenderData rowRenderData = new RowRenderData(); | 
 |  |  |                     RowStyle rowStyle = new RowStyle(); | 
 |  |  |                     rowStyle.setHeight(40); | 
 |  |  |                     rowRenderData.setRowStyle(rowStyle); | 
 |  |  |                     List<CellRenderData> cells = new ArrayList<>(); | 
 |  |  |                     //表格的列数 | 
 |  |  |                     for (int j = 0; j < 10; j++) { | 
 |  |  |                         CellRenderData cellRenderData = new CellRenderData(); | 
 |  |  |                         CellStyle cellStyle = new CellStyle(); | 
 |  |  |                         cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER); | 
 |  |  |                         cellRenderData.setCellStyle(cellStyle); | 
 |  |  |                         List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>(); | 
 |  |  |                         ParagraphRenderData paragraphRenderData = new ParagraphRenderData(); | 
 |  |  |                         ParagraphStyle paragraphStyle = new ParagraphStyle(); | 
 |  |  |                         paragraphStyle.setAlign(ParagraphAlignment.CENTER); | 
 |  |  |                         paragraphRenderData.setParagraphStyle(paragraphStyle); | 
 |  |  |                         List<RenderData> renderData = new ArrayList<>(); | 
 |  |  |                         TextRenderData textRenderData = new TextRenderData(); | 
 |  |  |                         Style style = new Style(); | 
 |  |  |                         style.setFontFamily("宋体"); | 
 |  |  |                         style.setColor("000000"); | 
 |  |  |                         textRenderData.setStyle(style); | 
 |  |  |                         if (i == 0) { | 
 |  |  |                             //第一行 | 
 |  |  |                             if (j == 0) { | 
 |  |  |                                 //第一列序号 | 
 |  |  |                                 textRenderData.setText("序号@No."); | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } else if (j == 1) { | 
 |  |  |                                 //第二列 | 
 |  |  |                                 textRenderData.setText("检验报告编号@Inspection report number"); | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } else if (j == 2) { | 
 |  |  |                                 //第三列 | 
 |  |  |                                 textRenderData.setText("页数@Pages"); | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } else if (j == 3) { | 
 |  |  |                                 //第四列 | 
 |  |  |                                 textRenderData.setText("发送份数@Number of copies sent"); | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } else if (j == 4) { | 
 |  |  |                                 //第五列 | 
 |  |  |                                 textRenderData.setText("发往何处@Where to send to"); | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } else if (j == 5) { | 
 |  |  |                                 //第六列 | 
 |  |  |                                 textRenderData.setText("发送方式@Send method"); | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } else if (j == 6) { | 
 |  |  |                                 //第七列 | 
 |  |  |                                 textRenderData.setText("发送日期@Date sent"); | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             }else if (j == 7) { | 
 |  |  |                                 //第八列 | 
 |  |  |                                 textRenderData.setText("发送人@Sender"); | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             }else if (j == 8) { | 
 |  |  |                                 //第九列 | 
 |  |  |                                 textRenderData.setText("签收人@Signatory"); | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             }else{ | 
 |  |  |                                 //第十列 | 
 |  |  |                                 textRenderData.setText("备注@Remark"); | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                         else { | 
 |  |  |                             //其他行 | 
 |  |  |                             if (j == 0) { | 
 |  |  |                                 //第一列 | 
 |  |  |                                 try{ | 
 |  |  |                                     String insReportCode = processReports.get((i-1) + (index1 - 1) * 20).getInsReportCode(); | 
 |  |  |                                     textRenderData.setText(index + ""); | 
 |  |  |                                 } catch (Exception e) { | 
 |  |  |                                     textRenderData.setText(""); | 
 |  |  |                                 } | 
 |  |  |                                 index++; | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } else if (j == 1) { | 
 |  |  |                                 try{ | 
 |  |  |                                     textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getInsReportCode()); | 
 |  |  |                                 } catch (Exception e) { | 
 |  |  |                                     textRenderData.setText(""); | 
 |  |  |                                 } | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } | 
 |  |  |                             else if (j == 2) { | 
 |  |  |                                 try{ | 
 |  |  |                                     textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getPages()); | 
 |  |  |                                 } catch (Exception e) { | 
 |  |  |                                     textRenderData.setText(""); | 
 |  |  |                                 } | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } | 
 |  |  |                             else if (j == 3) { | 
 |  |  |                                 try{ | 
 |  |  |                                     textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getNumber()); | 
 |  |  |                                 } catch (Exception e) { | 
 |  |  |                                     textRenderData.setText(""); | 
 |  |  |                                 } | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } | 
 |  |  |                             else if (j == 4) { | 
 |  |  |                                 try{ | 
 |  |  |                                     textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getSend()); | 
 |  |  |                                 } catch (Exception e) { | 
 |  |  |                                     textRenderData.setText(""); | 
 |  |  |                                 } | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } | 
 |  |  |                             else if (j == 5) { | 
 |  |  |                                 try{ | 
 |  |  |                                     textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getMethod()); | 
 |  |  |                                 } catch (Exception e) { | 
 |  |  |                                     textRenderData.setText(""); | 
 |  |  |                                 } | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } | 
 |  |  |                             else if (j == 6) { | 
 |  |  |                                 try{ | 
 |  |  |                                     textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getSendTime()+""); | 
 |  |  |                                 } catch (Exception e) { | 
 |  |  |                                     textRenderData.setText(""); | 
 |  |  |                                 } | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } | 
 |  |  |                             else if (j == 7) { | 
 |  |  |                                 try{ | 
 |  |  |                                     textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getSendUserName()); | 
 |  |  |                                 } catch (Exception e) { | 
 |  |  |                                     textRenderData.setText(""); | 
 |  |  |                                 } | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } | 
 |  |  |                             else if (j == 8) { | 
 |  |  |                                 try{ | 
 |  |  |                                     textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getSignatoryName()); | 
 |  |  |                                 } catch (Exception e) { | 
 |  |  |                                     textRenderData.setText(""); | 
 |  |  |                                 } | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } | 
 |  |  |                             else { | 
 |  |  |                                 try{ | 
 |  |  |                                     textRenderData.setText(processReports.get((i-1) + (index1 - 1) * 20).getRemark()); | 
 |  |  |                                 } catch (Exception e) { | 
 |  |  |                                     textRenderData.setText(""); | 
 |  |  |                                 } | 
 |  |  |                                 renderData.add(textRenderData); | 
 |  |  |                                 paragraphRenderData.setContents(renderData); | 
 |  |  |                                 paragraphRenderDataList.add(paragraphRenderData); | 
 |  |  |                                 cellRenderData.setParagraphs(paragraphRenderDataList); | 
 |  |  |                                 cells.add(cellRenderData); | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     rowRenderData.setCells(cells); | 
 |  |  |                     if (rowRenderData.getCells().size() != 0) { | 
 |  |  |                         rows.add(rowRenderData); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 TableRenderData tableRenderData = new TableRenderData(); | 
 |  |  |                 tableRenderData.setRows(rows); | 
 |  |  |                 int countSize = tableRenderData.getRows().get(0).getCells().size(); | 
 |  |  |                 for (RowRenderData row : tableRenderData.getRows()) { | 
 |  |  |                     if (row.getCells().size() != countSize) { | 
 |  |  |                         throw new ErrorException("每行单元格不相等"); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 TableStyle tableStyle = new TableStyle(); | 
 |  |  |                 tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH); | 
 |  |  |                 tableStyle.setAlign(TableRowAlign.CENTER); | 
 |  |  |                 BorderStyle borderStyle = new BorderStyle(); | 
 |  |  |                 borderStyle.setColor("000000"); | 
 |  |  |                 borderStyle.setType(XWPFTable.XWPFBorderType.THICK); | 
 |  |  |                 borderStyle.setSize(14); | 
 |  |  |                 tableStyle.setLeftBorder(borderStyle); | 
 |  |  |                 tableStyle.setTopBorder(borderStyle); | 
 |  |  |                 tableStyle.setRightBorder(borderStyle); | 
 |  |  |                 tableStyle.setBottomBorder(borderStyle); | 
 |  |  |                 tableRenderData.setTableStyle(tableStyle); | 
 |  |  |                 Map<String, Object> table = new HashMap<>(); | 
 |  |  |                 table.put("report", tableRenderData); | 
 |  |  |                 table.put("index1", index1); | 
 |  |  |                 reportList.add(table); | 
 |  |  |                 index1++; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         Integer finalIndex = index1; | 
 |  |  |         XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render( | 
 |  |  |     public void exportProcessReport(List<Integer> ids, HttpServletResponse response) { | 
 |  |  |         List<ProcessReport> processReports = processReportMapper.getIds(ids); | 
 |  |  | //        for (ProcessReport record : processReports) { | 
 |  |  | //            List<String> name = new ArrayList<>(); | 
 |  |  | //            if(StringUtils.isNotBlank(record.getSignatory())){ | 
 |  |  | //                for (String s : record.getSignatory().split(",")) { | 
 |  |  | //                    User user = userMapper.selectById(Integer.parseInt(s)); | 
 |  |  | //                    name.add(user.getName()); | 
 |  |  | //                } | 
 |  |  | //                String signatoryName = name.stream().collect(Collectors.joining(",")); | 
 |  |  | //                record.setSignatoryName(signatoryName); | 
 |  |  | //            } | 
 |  |  | //        } | 
 |  |  |         // 获取路径 | 
 |  |  |         InputStream inputStream = this.getClass().getResourceAsStream("/static/report-deal.docx"); | 
 |  |  |         Configure configure = Configure.builder() | 
 |  |  |                 .bind("reportList", new HackLoopTableRenderPolicy()) | 
 |  |  |                 .build(); | 
 |  |  |         XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( | 
 |  |  |                 new HashMap<String, Object>() {{ | 
 |  |  |                     put("reportList", reportList); | 
 |  |  |                     put("reportList", processReports); | 
 |  |  |                 }}); | 
 |  |  |         String name = UUID.randomUUID() + "_检验报告发放登记表" + ".docx"; | 
 |  |  |         try { | 
 |  |  |             template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name))); | 
 |  |  |         } catch (IOException e) { | 
 |  |  |             throw new RuntimeException(e); | 
 |  |  |             response.setContentType("application/msword"); | 
 |  |  |             String fileName = URLEncoder.encode( | 
 |  |  |                     "检验报告发放登记表", "UTF-8"); | 
 |  |  |             response.setHeader("Content-disposition", | 
 |  |  |                     "attachment;filename=" + fileName + ".docx"); | 
 |  |  |             OutputStream os = response.getOutputStream(); | 
 |  |  |             template.write(os); | 
 |  |  |             os.flush(); | 
 |  |  |             os.close(); | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |             throw new RuntimeException("导出失败"); | 
 |  |  |         } | 
 |  |  |         //处理中英文换行的问题 | 
 |  |  |         String path = wordUrl + "/" + name; | 
 |  |  |         try { | 
 |  |  |             FileInputStream stream1 = new FileInputStream(path); | 
 |  |  |             XWPFDocument document1 = new XWPFDocument(stream1); | 
 |  |  |             List<XWPFTable> xwpfTables1 = document1.getTables(); | 
 |  |  |             for (int i = 0; i < xwpfTables1.size(); i++) { | 
 |  |  |                 for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) { | 
 |  |  |                     for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) { | 
 |  |  |                         if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) { | 
 |  |  |                             String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText(); | 
 |  |  |                             String[] split = text.split("@"); | 
 |  |  |                             xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0); | 
 |  |  |                             XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph(); | 
 |  |  |                             XWPFRun run = xwpfParagraph.createRun(); | 
 |  |  |                             run.setText(split[0]); | 
 |  |  |                             if (ObjectUtils.isNotNull(split[1])) { | 
 |  |  |                                 run.addBreak(); | 
 |  |  |                                 run.setText(split[1]); | 
 |  |  |                             } | 
 |  |  |                             xwpfParagraph.setAlignment(ParagraphAlignment.CENTER); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             FileOutputStream fileOutputStream1 = new FileOutputStream(path); | 
 |  |  |             document1.write(fileOutputStream1); | 
 |  |  |             fileOutputStream1.close(); | 
 |  |  |         } catch (FileNotFoundException e) { | 
 |  |  |             throw new RuntimeException(e); | 
 |  |  |         } catch (IOException e) { | 
 |  |  |             throw new RuntimeException(e); | 
 |  |  |         } | 
 |  |  |         return name; | 
 |  |  |     } | 
 |  |  | } |