ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjPackageController.java
@@ -183,14 +183,61 @@ // return getDataTable(tjPackageList); // } String pacName=""; if (cusSex.equals("2")) { return getDataTable(tjPackageService.getPacListBySqlAndAll(pacName)); if (cusSex==null || cusSex.equals("2")) { final List<TjPackage> pacListBySqlAndAll = tjPackageService.getPacListBySqlAndAll(pacName); if (pacListBySqlAndAll!=null){ for (TjPackage tjPackage : pacListBySqlAndAll) { List<TjProject> res=new ArrayList<>(); LambdaQueryWrapper<TjPackageProject> wqq=new LambdaQueryWrapper<>(); wqq.eq(TjPackageProject::getPacId,tjPackage.getPacId()); final List<TjPackageProject> list = ppservice.list(wqq); if (list!=null){ for (TjPackageProject tjPackageProject : list) { final TjProject byId = tjProjectService.getById(tjPackageProject.getProId()); res.add(byId); } tjPackage.setTjProjectList(res); } } } return getDataTable(pacListBySqlAndAll); } else { if (cusSex.equals("0")) { return getDataTable(tjPackageService.getPacListBySqlAndMan(pacName)); final List<TjPackage> pacListBySqlAndMan = tjPackageService.getPacListBySqlAndMan(pacName); if (pacListBySqlAndMan!=null){ for (TjPackage tjPackage : pacListBySqlAndMan) { List<TjProject> res=new ArrayList<>(); LambdaQueryWrapper<TjPackageProject> wqq=new LambdaQueryWrapper<>(); wqq.eq(TjPackageProject::getPacId,tjPackage.getPacId()); final List<TjPackageProject> list = ppservice.list(wqq); if (list!=null){ for (TjPackageProject tjPackageProject : list) { final TjProject byId = tjProjectService.getById(tjPackageProject.getProId()); res.add(byId); } tjPackage.setTjProjectList(res); } } } return getDataTable(pacListBySqlAndMan); }else { return getDataTable(tjPackageService.getPacListBySqlAndWomen(pacName)); final List<TjPackage> pacListBySqlAndWomen = tjPackageService.getPacListBySqlAndWomen(pacName); if (pacListBySqlAndWomen!=null){ for (TjPackage tjPackage : pacListBySqlAndWomen) { List<TjProject> res=new ArrayList<>(); LambdaQueryWrapper<TjPackageProject> wqq=new LambdaQueryWrapper<>(); wqq.eq(TjPackageProject::getPacId,tjPackage.getPacId()); final List<TjPackageProject> list = ppservice.list(wqq); if (list!=null){ for (TjPackageProject tjPackageProject : list) { final TjProject byId = tjProjectService.getById(tjPackageProject.getProId()); res.add(byId); } tjPackage.setTjProjectList(res); } } } return getDataTable(pacListBySqlAndWomen); } } } ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjReportController.java
@@ -430,11 +430,11 @@ //设置文档的页边距就是距离页面边上的距离,分别为:左边距,右边距,上边距,下边距 document.setMargins(70, 70, 40, 40); //生成pdf的位置以及名称 String fileName = value + "\\" + userId + "体检报告项目详情页.pdf"; String fileName = value + "\\" + userId +tjNumber+ "体检报告项目详情页.pdf"; OutputStream outputStream = Files.newOutputStream(Paths.get(fileName)); PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream); pdfWriter.setPageEvent(new MyHeaderFooter());// 页眉页脚 //pdfWriter.setPageEvent(new MyHeaderFooter());// 页眉页脚 document.open(); @@ -584,14 +584,14 @@ outputStream.close(); // TODO: 2023/3/29 查询附件pdf 如心电图、附件 LambdaQueryWrapper<TjReport> rtwq1 = new LambdaQueryWrapper<>(); rtwq1.eq(TjReport::getType, "医学名词"); // rtwq1.eq(TjReport::getTjNumber, tjNumber); TjReport one11111 = tjReportService.getOne(rtwq1); if(null !=one11111){ String report1 = one11111.getReport(); PDFBinaryUtil.base64StringToPDF(report1, FileUtil.mkdir(value).getPath() + "\\" + userId + "医学名词.pdf"); } // LambdaQueryWrapper<TjReport> rtwq1 = new LambdaQueryWrapper<>(); // rtwq1.eq(TjReport::getType, "医学名词"); //// rtwq1.eq(TjReport::getTjNumber, tjNumber); // TjReport one11111 = tjReportService.getOne(rtwq1); // if(null !=one11111){ // String report1 = one11111.getReport(); // PDFBinaryUtil.base64StringToPDF(report1, FileUtil.mkdir(value).getPath() + "\\" + userId + "医学名词.pdf"); // } LambdaQueryWrapper<TjReport> rtwq = new LambdaQueryWrapper<>(); rtwq.eq(TjReport::getType, "心电图"); @@ -611,7 +611,7 @@ PDFBinaryUtil.base64StringToPDF(report12, FileUtil.mkdir(value).getPath() + "\\" + userId + "附件.pdf"); } //合并 String[] files1 = {value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + "体检报告项目详情页.pdf", value + "\\" + userId + "医学名词.pdf", value + "\\" + userId + "附件.pdf", value + "\\" + userId + "心电图.pdf"}; String[] files1 = {value + "\\" + userId + "体检报告封面页.pdf", value + "\\" + userId + tjNumber+"体检报告项目详情页.pdf", value + "\\" + userId + "附件.pdf", value + "\\" + userId + "心电图.pdf"}; String outputPath1 = value + "\\"; String outputFileName1 = userId + tjNumber + tjCustomer.getCusName() + "_体检报告.pdf"; @@ -633,7 +633,7 @@ //TODO 2023/2/3 16:21 生成体检报告pdf后删除本地文件 //FileUtil.del(value + "\\" + tjNumber + "体检报告.pdf"); //FileUtil.del(value + "\\" + userId + "体检报告封面模板.pdf"); //FileUtil.del(value + "\\" + userId + "体检报告项目详情页.pdf"); //FileUtil.del(value + "\\" + userId +tjNumber+ "体检报告项目详情页.pdf"); //FileUtil.del(value + "\\" + userId + "体检报告封面页.pdf"); //FileUtil.del(value + "\\" + userId + "心电图.pdf"); ltkj-admin/src/test/java/lgTest.java
@@ -1,5 +1,8 @@ import com.itextpdf.text.*; import com.itextpdf.text.pdf.*; import com.ltkj.LtkjApplication; import com.ltkj.hosp.mapper.TestMapper; import com.ltkj.web.config.pdfutils.MyHeaderFooter; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; @@ -9,6 +12,11 @@ import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Paths; /** * @Company: 西安路泰科技有限公司 @@ -23,11 +31,117 @@ @Resource private TestMapper testMapper; @Test public void lige() { // try { // PdfReader reader = new PdfReader("original.pdf"); // PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("output.pdf")); // // 获取 PDF 中的页数 // int pageCount = reader.getNumberOfPages();// 添加水印 // System.out.println(pageCount); // for (int i = 1; i <= pageCount; i++) { // final int numberOfPages = reader.getNumberOfPages(i); // } // stamper.close(); // reader.close(); // // } catch (Exception e) { // e.printStackTrace(); // } } /** * @param srcPdfPath 源PDF文件路径 * @param tagetPdfPath 加了页码的PDF文件路径 * @description 给PDF文件添加页码 */ public static void addPageNum(String srcPdfPath, String tagetPdfPath) { try { // 输出文件 流 FileOutputStream fos = new FileOutputStream(tagetPdfPath); // 读取 源PDF文件,进行一页一页复制,才能触发 添加页码的 页面监听事件 PdfReader reader = new PdfReader(srcPdfPath); // 获取 源文件总页数 int num = reader.getNumberOfPages(); // 新建文档,默认A4大小 Document document = new Document(PageSize.A4); PdfWriter writer = PdfWriter.getInstance(document, fos); // 设置页面监听事件,必须在open方法前 writer.setPageEvent(new PdfNumPageEvent(num)); document.open(); // PDF内容体 PdfContentByte pdfContent = writer.getDirectContent(); //System.out.println("总页数:" + num); // 页面数是从1开始的 for (int i = 1; i <= num; i++) { document.newPage(); // 设置空页码进行展示 writer.setPageEmpty(false); PdfImportedPage page = writer.getImportedPage(reader, i); // 复制好的页面,添加到内容去,触发事件监听 pdfContent.addTemplate(page, 0, 42); } document.close(); reader.close(); } catch (Exception e) { e.printStackTrace(); } } /** * @description 针对页码生成的PDF事件监听 **/ public static class PdfNumPageEvent extends PdfPageEventHelper { private int total; PdfNumPageEvent() { } PdfNumPageEvent(int num) { this.total = num; } @Override public void onEndPage(PdfWriter writer, Document document) { try { // PDF文档内容 PdfContentByte pdfContent = writer.getDirectContent(); pdfContent.saveState(); pdfContent.beginText(); int footerFontSize = 10; // 解决页码中文无法显示 或者 显示为乱码的问题 // 但是必须引入jar包 itext-asian-5.2.0.jar BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false); Font fontDetail = new Font(baseFont, footerFontSize, Font.NORMAL); pdfContent.setFontAndSize(baseFont, footerFontSize); // 页脚的页码 展示 String footerNum = String.format("第%d页,共" + total + "页", writer.getPageNumber()); Phrase phrase = new Phrase(footerNum, fontDetail); // 页码的 横轴 坐标 居中 float x = (document.left() + document.right()) / 2 + 10; // 页码的 纵轴 坐标 float y = document.bottom(-20); // 添加文本内容,进行展示页码 ColumnText.showTextAligned(pdfContent, Element.ALIGN_CENTER, phrase, x, y, 0); pdfContent.endText(); pdfContent.restoreState(); } catch (Exception e) { e.printStackTrace(); } } } public static void main(String[] args) { Long a=12L; final long l = a + 10000;