From 1836a50a3ea49ddcb9ab73e65b0e8939c9802a40 Mon Sep 17 00:00:00 2001 From: pserimal Date: Fri, 16 Jun 2023 15:41:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E7=9B=9F=E5=95=86=E8=B5=84=E6=A0=BC?= =?UTF-8?q?=E9=9D=A2=E8=AF=95=E4=BB=A3=E7=A0=81=E5=AD=97=E6=AE=B5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=8F=8APDF=E8=BD=AC=E5=9B=BE=E7=89=87=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- coolstore-partner-common/pom.xml | 6 ++ .../java/com/cool/store/utils/PDFUtils.java | 42 ++++++++++- .../com/cool/store/utils/PassLetterUtils.java | 10 ++- .../mapper/HyPartnerInterviewMapper.java | 14 ++-- .../mapper/HyPartnerInterviewMapper.xml | 35 ++++------ .../store/dto/partner/EnterInterviewDto.java | 4 +- .../cool/store/vo/PartnerInterviewInfoVO.java | 3 + .../store/vo/PartnerPassLetterDetailVO.java | 7 +- .../service/PartnerInterviewService.java | 2 +- .../service/impl/InterviewServiceImpl.java | 10 +-- .../impl/PartnerInterviewServiceImpl.java | 65 +++++++++++------- .../store/controller/InterviewController.java | 4 +- .../src/main/resources/static/simsun.ttc | Bin 0 -> 17909384 bytes 13 files changed, 135 insertions(+), 67 deletions(-) create mode 100644 coolstore-partner-webc/src/main/resources/static/simsun.ttc diff --git a/coolstore-partner-common/pom.xml b/coolstore-partner-common/pom.xml index 0961b14dd..cdf95f685 100644 --- a/coolstore-partner-common/pom.xml +++ b/coolstore-partner-common/pom.xml @@ -98,6 +98,12 @@ openpdf 1.3.30 + + + org.apache.pdfbox + pdfbox + 2.0.27 + \ No newline at end of file diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/PDFUtils.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/PDFUtils.java index 272b19a0e..3df31afd9 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/utils/PDFUtils.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/PDFUtils.java @@ -5,10 +5,13 @@ import com.lowagie.text.Font; import com.lowagie.text.Image; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.*; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.rendering.PDFRenderer; +import javax.imageio.ImageIO; import java.awt.*; -import java.io.IOException; -import java.io.OutputStream; +import java.awt.image.BufferedImage; +import java.io.*; /** * 使用 OpenPDF 封装的 pdf 工具类 @@ -120,7 +123,42 @@ public class PDFUtils { throw new RuntimeException(ex); } } + } + /** + * PDF 转图片 + * @param inputStream pdf 输入流 + * @param dpi + */ + public static ByteArrayOutputStream pdf2Img(InputStream inputStream, float dpi) { + PDDocument document = null; + ByteArrayOutputStream outputStream = null; + try { + // 加载pdf文档 + FileInputStream fileInputStream = new FileInputStream("passLetter.pdf"); + document = PDDocument.load(fileInputStream); + // PDF文档渲染对象 + PDFRenderer renderer = new PDFRenderer(document); + int pageCount = document.getNumberOfPages(); + for (int i = 0; i < pageCount; i++) { + /* + * renderImage(i,1.9f) + * i: 指定页对象下标,从0开始,0即第一页 + * 1.9f:DPI值(Dots Per Inch),官方描述比例因子,其中 1 = 72 DPI + */ + BufferedImage image = renderer.renderImage(i, dpi); + outputStream = new ByteArrayOutputStream(); + FileOutputStream fileOutputStream = new FileOutputStream("pdf2img.png"); + ImageIO.write(image, "PNG", outputStream); + byte[] byteArray = outputStream.toByteArray(); + fileOutputStream.write(byteArray); + fileOutputStream.close(); + return outputStream; + } + }catch (Exception e){ + e.printStackTrace(); + } + return outputStream; } } diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/PassLetterUtils.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/PassLetterUtils.java index a94e5ee53..a78b41bf6 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/utils/PassLetterUtils.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/PassLetterUtils.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; import com.lowagie.text.Document; import com.lowagie.text.Image; +import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfReader; import com.lowagie.text.pdf.PdfWriter; @@ -49,7 +50,8 @@ public class PassLetterUtils { return outputStream; } catch (IOException e) { throw new RuntimeException(e); - } finally { + } + finally { try { document.close(); outputStream.close(); @@ -73,8 +75,10 @@ public class PassLetterUtils { try { ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); PdfReader pdfReader = new PdfReader(inputStream); - PDFUtils.putParagraphAbsolutely(pdfReader, outputStream, x, y, content, 20, new Color(255, 82,25)); - } catch (IOException e) { + String fontFamillyPath = PassLetterUtils.class.getResource("/static/simsun.ttc").getPath(); + BaseFont font = BaseFont.createFont(fontFamillyPath + ",0", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); + PDFUtils.putParagraphAbsolutely(pdfReader, outputStream, x, y, content, font, 20, 1, new Color(255, 82,25)); + } catch (Exception e) { throw new RuntimeException(e); } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java index b26ecc51e..f6f345a13 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java @@ -37,13 +37,13 @@ public interface HyPartnerInterviewMapper { * 修改面试状态 * 预约状态 0 待预约;1待面试;2已开始;3待审核;4审批中;5审批通过;6拒绝 */ - int updateInterviewStatus(@Param("interviewId") String interviewId, @Param("status") Integer status); + int updateInterviewStatus(@Param("interviewPlanId") String interviewPlanId, @Param("status") Integer status); /** * 修改面试实际开始时间 * @param dateTime "yyyy-MM-dd HH:mm:ss" */ - int updateActualStartTime(@Param("interviewId") String interviewId, @Param("dateTime") String dateTime); + int updateActualStartTime(@Param("interviewPlanId") String interviewPlanId, @Param("dateTime") String dateTime); /** * 修改加盟商或面试官进入面试时间 @@ -51,27 +51,27 @@ public interface HyPartnerInterviewMapper { * @param dateTime "yyyy-MM-dd HH:mm:ss" * @return */ - int updateEnterTime(@Param("interviewId") String interviewId, @Param("userType") Integer userType, @Param("dateTime") String dateTime); + int updateEnterTime(@Param("interviewPlanId") String interviewPlanId, @Param("userType") Integer userType, @Param("dateTime") String dateTime); /** * 将加盟商是否参会修改为参会 * 0未参加,1参加 */ - int updateWhetherPartnerEnter(@Param("interviewId") String interviewId); + int updateWhetherPartnerEnter(@Param("interviewPlanId") String interviewPlanId); /** * 根据会议 id 查询面试官 id */ - EnterInterviewVO getInterviewerByInterviewId(@Param("interviewId") String interviewId); + EnterInterviewVO getInterviewerByInterviewPlanId(@Param("interviewPlanId") String interviewPlanId); /** * 获取通知函详情 */ - PartnerPassLetterDetailVO getPassLetterDetail(@Param("interviewId") String interviewId); + PartnerPassLetterDetailVO getPassLetterDetail(@Param("interviewPlanId") String interviewPlanId); /** * 生成通过函 pdf 后修改 */ - int updatePassLetterInfo(@Param("passCode") String passCode, @Param("passFileUrl") String passFileUrl, @Param("expiryDate") String expiryDate, @Param("interviewId") String interviewId); + int updatePassLetterInfo(@Param("passCode") String passCode, @Param("passPdfUrl") String passPdfUrl, @Param("passImageUrl") String passImageUrl, @Param("expiryDate") String expiryDate, @Param("interviewId") String interviewId); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml index 2eee85c8c..09982b133 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml @@ -27,7 +27,7 @@ - + @@ -255,7 +255,7 @@ +