Browse Source

3.3.0 签到表补空白页

xiaofei 1 year ago
parent
commit
b315a689d9

+ 4 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java

@@ -271,7 +271,10 @@ public class PrintCommonServiceImpl implements PrintCommonService {
 
 
             File pdfFileTemp = SystemConstant.getFileTempVar(SystemConstant.PDF_PREFIX);
             File pdfFileTemp = SystemConstant.getFileTempVar(SystemConstant.PDF_PREFIX);
             fileTempList.add(pdfFileTemp);
             fileTempList.add(pdfFileTemp);
-            createPrintPdfUtil.createSignPdf(pdfFillDto, pdfFileTemp.getPath(), diallel);
+            pdfFileTemp = createPrintPdfUtil.createSignPdf(pdfFillDto, pdfFileTemp.getPath(), diallel);
+            // 校验签到表是否自动分页。2页及以上的pdf,每页后面都需要补一个空白页
+            // 补空白页
+            PdfUtil.addPdfEmptyPage(pdfFileTemp);
 
 
             String pdfDirName = pdfStringJoiner.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
             String pdfDirName = pdfStringJoiner.toString().replaceAll("\\\\", SystemConstant.ORG_SPLIT);
             //pdf生成和上传
             //pdf生成和上传

+ 37 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/PdfUtil.java

@@ -125,6 +125,43 @@ public class PdfUtil {
         return new PdfDto(pageSizeEnum, Objects.nonNull(reader) ? reader.getNumberOfPages() : 0, pageCount);
         return new PdfDto(pageSizeEnum, Objects.nonNull(reader) ? reader.getNumberOfPages() : 0, pageCount);
     }
     }
 
 
+    /**
+     * 新增pdf page
+     *
+     * @param pdfFile
+     * @return
+     * @throws IOException
+     */
+    public static void addPdfEmptyPage(File pdfFile) throws IOException {
+        PdfReader reader = null;
+        FileOutputStream fileOutputStream = null;
+        int pageCount;
+        try {
+            if (Objects.nonNull(pdfFile)) {
+                reader = new PdfReader(ByteArray.fromFile(pdfFile).value());
+                pageCount = reader.getNumberOfPages();
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                PdfStamper stamper = new PdfStamper(reader, baos);
+                for (int i = 1; i <= pageCount; i++) {
+                    stamper.insertPage(2 * i, reader.getPageSizeWithRotation(1));
+                }
+                stamper.close();
+                fileOutputStream = new FileOutputStream(pdfFile);
+                IOUtils.write(baos.toByteArray(), fileOutputStream);
+            }
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+        } finally {
+            if (Objects.nonNull(reader)) {
+                reader.close();
+            }
+            if (Objects.nonNull(fileOutputStream)) {
+                fileOutputStream.flush();
+                fileOutputStream.close();
+            }
+        }
+    }
+
     /**
     /**
      * 获取pdfPages
      * 获取pdfPages
      *
      *