From 8b25e112e8c870e0fef04885c3001ae64e231f4e Mon Sep 17 00:00:00 2001 From: winter <2436197699@qq.com> Date: Thu, 25 Jan 2024 15:33:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AD=A6=E7=94=9F=E8=AF=84=E4=BB=B7?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=20pdf=20=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 18 ++++++++ .../frontend/AppraiseController.java | 10 +++- .../controller/frontend/HelloController.java | 17 +++++++ .../teammodel/service/EvaluationService.java | 5 ++ .../service/impl/EvaluationServiceImpl.java | 12 +++++ src/main/java/cn/teammodel/utils/PdfUtil.java | 43 ++++++++++++++++++ .../templates/pdf_templates/template.pdf | Bin 0 -> 41128 bytes 7 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 src/main/java/cn/teammodel/utils/PdfUtil.java create mode 100644 src/main/resources/templates/pdf_templates/template.pdf diff --git a/pom.xml b/pom.xml index 8ec0e1d..8b18d9d 100644 --- a/pom.xml +++ b/pom.xml @@ -42,6 +42,24 @@ spring-boot-configuration-processor + + + com.itextpdf + itextpdf + 5.5.10 + + + com.itextpdf + itext-asian + 5.2.0 + + + + org.jfree + jfreechart + 1.5.0 + + com.squareup.okhttp3 okhttp diff --git a/src/main/java/cn/teammodel/controller/frontend/AppraiseController.java b/src/main/java/cn/teammodel/controller/frontend/AppraiseController.java index c1699cf..36439a7 100644 --- a/src/main/java/cn/teammodel/controller/frontend/AppraiseController.java +++ b/src/main/java/cn/teammodel/controller/frontend/AppraiseController.java @@ -7,6 +7,7 @@ import cn.teammodel.model.entity.appraise.Appraise; import cn.teammodel.model.vo.appraise.AppraiseRecordVo; import cn.teammodel.model.vo.appraise.StudentReportVo; import cn.teammodel.service.EvaluationService; +import com.itextpdf.text.DocumentException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.PostMapping; @@ -15,7 +16,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.IOException; import java.util.List; /** @@ -83,6 +86,9 @@ public class AppraiseController { return R.success(res); } - - + @PostMapping("studentReportPDF") + @ApiOperation(value = "导出学生当前的学期的实时评价报告 PDF") + public void exportStuReportPdf(@Valid @RequestBody IdRequest idRequest, HttpServletResponse response) throws DocumentException, IOException { + evaluationService.exportStuReportPdf(idRequest, response); + } } diff --git a/src/main/java/cn/teammodel/controller/frontend/HelloController.java b/src/main/java/cn/teammodel/controller/frontend/HelloController.java index 2690529..126e3ec 100644 --- a/src/main/java/cn/teammodel/controller/frontend/HelloController.java +++ b/src/main/java/cn/teammodel/controller/frontend/HelloController.java @@ -1,7 +1,11 @@ package cn.teammodel.controller.frontend; +import cn.hutool.core.map.MapUtil; import cn.teammodel.common.R; import cn.teammodel.repository.AppraiseRepository; +import cn.teammodel.service.EvaluationService; +import cn.teammodel.utils.PdfUtil; +import com.itextpdf.text.DocumentException; import io.swagger.annotations.Api; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.context.SecurityContextHolder; @@ -10,12 +14,17 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Map; @RestController @RequestMapping("/") @Api(tags = "鉴权测试") public class HelloController { + @Resource + private EvaluationService evaluationService; @Resource private AppraiseRepository appraiseRepository; @@ -31,4 +40,12 @@ public class HelloController { public R free() { return new R(200, "success","hello world"); } + + @GetMapping("public/pdf") + public void freepdf(HttpServletResponse response) throws DocumentException, IOException { + Map data = MapUtil.ofEntries(MapUtil.entry("Text1", "1000"), MapUtil.entry("Text2", "2000"), MapUtil.entry("Text3", "3000")); + PdfUtil.fillStudentPdfForm(data, response); + } + + } \ No newline at end of file diff --git a/src/main/java/cn/teammodel/service/EvaluationService.java b/src/main/java/cn/teammodel/service/EvaluationService.java index 8df8500..2e6a6c3 100644 --- a/src/main/java/cn/teammodel/service/EvaluationService.java +++ b/src/main/java/cn/teammodel/service/EvaluationService.java @@ -6,7 +6,10 @@ import cn.teammodel.model.entity.appraise.Appraise; import cn.teammodel.model.entity.appraise.AppraiseTreeNode; import cn.teammodel.model.vo.appraise.AppraiseRecordVo; import cn.teammodel.model.vo.appraise.StudentReportVo; +import com.itextpdf.text.DocumentException; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.List; /** @@ -59,4 +62,6 @@ public interface EvaluationService { * 学生评价报告 */ StudentReportVo studentReport(IdRequest idRequest); + + void exportStuReportPdf(IdRequest idRequest, HttpServletResponse response) throws IOException, DocumentException; } diff --git a/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java b/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java index 8dc582a..964069c 100644 --- a/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java +++ b/src/main/java/cn/teammodel/service/impl/EvaluationServiceImpl.java @@ -22,6 +22,7 @@ import cn.teammodel.utils.RepositoryUtil; import cn.teammodel.utils.SchoolDateUtil; import com.azure.cosmos.models.CosmosPatchOperations; import com.azure.spring.data.cosmos.core.query.CosmosPageRequest; +import com.itextpdf.text.DocumentException; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.Page; @@ -29,6 +30,9 @@ import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.time.Instant; import java.time.LocalDate; import java.util.*; @@ -602,6 +606,14 @@ public class EvaluationServiceImpl implements EvaluationService { .build(); } + @Override + public void exportStuReportPdf(IdRequest idRequest, HttpServletResponse response) throws IOException, DocumentException{ + + + ServletOutputStream os = response.getOutputStream(); + + } + /** * 递归收集 id 的节点及 id 节点的孩子节点 (迭代器删除居然也报错) */ diff --git a/src/main/java/cn/teammodel/utils/PdfUtil.java b/src/main/java/cn/teammodel/utils/PdfUtil.java new file mode 100644 index 0000000..269f130 --- /dev/null +++ b/src/main/java/cn/teammodel/utils/PdfUtil.java @@ -0,0 +1,43 @@ +package cn.teammodel.utils; + +import com.itextpdf.text.DocumentException; +import com.itextpdf.text.pdf.AcroFields; +import com.itextpdf.text.pdf.PdfReader; +import com.itextpdf.text.pdf.PdfStamper; +import org.springframework.core.io.ClassPathResource; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Map; + +/** + * @author winter + * @create 2024-01-24 16:02 + */ +public class PdfUtil { + + public static void fillStudentPdfForm(Map data, HttpServletResponse response) throws IOException, DocumentException { + response.reset(); + response.setContentType("application/pdf"); + response.setHeader("Content-disposition", + "attachment;filename=report_student_" + System.currentTimeMillis() + ".pdf"); + + ClassPathResource resource = new ClassPathResource("templates/pdf_templates/template.pdf"); + InputStream in = resource.getInputStream(); + ServletOutputStream os = response.getOutputStream(); + fillPdfForm(in, os, data); + } + public static void fillPdfForm(InputStream in, OutputStream os, Map data) throws IOException, DocumentException { + PdfReader pdfReader = new PdfReader(in); + PdfStamper stamper = new PdfStamper(pdfReader, os); + AcroFields fields = stamper.getAcroFields(); + for (Map.Entry entry : data.entrySet()) { + fields.setField(entry.getKey(), entry.getValue()); + } + stamper.close(); + os.close(); + } +} \ No newline at end of file diff --git a/src/main/resources/templates/pdf_templates/template.pdf b/src/main/resources/templates/pdf_templates/template.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5305d16278ee66e2cf509a2d69773a4744856002 GIT binary patch literal 41128 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