Explorar el Código

封面及注意事项不生成页码

xy hace 2 semanas
padre
commit
00fa22e020

+ 2 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderServiceImpl.java

@@ -6022,7 +6022,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
 
             // 重新生成页码
             byte[] mergedPdfBytes = mergeOutputStream.toByteArray();
-            byte[] pdfWithPageNumbers = pdfService.addPageNumbersToPdf(mergedPdfBytes);
+            byte[] pdfWithPageNumbers = pdfService.addPageNumbersToPdf(mergedPdfBytes, 2);
             
             // 及时释放大对象引用
             mergedPdfBytes = null;
@@ -6113,7 +6113,7 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
 
             // 重新生成页码
             byte[] mergedPdfBytes = mergeOutputStream.toByteArray();
-            byte[] pdfWithPageNumbers = pdfService.addPageNumbersToPdf(mergedPdfBytes);
+            byte[] pdfWithPageNumbers = pdfService.addPageNumbersToPdf(mergedPdfBytes, 0);
             
             // 及时释放大对象引用
             mergedPdfBytes = null;

+ 8 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pdf/PdfService.java

@@ -6,7 +6,14 @@ import java.util.List;
 import java.util.Map;
 
 public interface PdfService {
-    byte[] addPageNumbersToPdf(byte[] pdfBytes) throws IOException;
+    /**
+     * 为 PDF 添加页码
+     *
+     * @param pdfBytes  原始 PDF 字节数组
+     * @param skipPages 跳过前几页不添加页码(0=不跳过,1=跳过1页,2=跳过2页)
+     * @return 添加页码后的 PDF 字节数组
+     */
+    byte[] addPageNumbersToPdf(byte[] pdfBytes, int skipPages) throws IOException;
     byte[] pdf(String templateId, String instanceId) throws Exception;
 
     /**

+ 13 - 6
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pdf/PdfServiceImpl.java

@@ -75,7 +75,7 @@ public class PdfServiceImpl implements PdfService {
     private String grapecityUrl;
 
     @Override
-    public byte[] addPageNumbersToPdf(byte[] pdfBytes) throws IOException {
+    public byte[] addPageNumbersToPdf(byte[] pdfBytes, int skipPages) throws IOException {
         try (ByteArrayInputStream inputStream = new ByteArrayInputStream(pdfBytes);
              ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
 
@@ -83,7 +83,13 @@ public class PdfServiceImpl implements PdfService {
 
             int totalPages = document.getNumberOfPages();
 
-            // 预加载字体,避免在循环中重复加载
+            // 容错:跳过页码大于或等于总页码时,直接返回原文件
+            if (skipPages >= totalPages) {
+                document.close();
+                return pdfBytes;
+            }
+
+            // 预加载字体
             PDType0Font songtiFont = null;
             try {
                 InputStream resourceAsStream = WordToPdfUtils.class.getClassLoader().getResourceAsStream("fonts/simsun.ttf");
@@ -96,7 +102,9 @@ public class PdfServiceImpl implements PdfService {
                 throw new IOException("加载宋体字体失败: " + e.getMessage(), e);
             }
 
-            for (int i = 0; i < totalPages; i++) {
+            int numberedTotal = totalPages - skipPages;
+
+            for (int i = skipPages; i < totalPages; i++) {
                 PDPage page = document.getPage(i);
                 try (PDPageContentStream contentStream = new PDPageContentStream(document, page,
                         PDPageContentStream.AppendMode.APPEND, true, true)) {
@@ -107,9 +115,8 @@ public class PdfServiceImpl implements PdfService {
 
                     // 设置页码位置(右下角)
                     float pageWidth = page.getMediaBox().getWidth();
-
-                    contentStream.newLineAtOffset(pageWidth / 2 - 50, 20); // 距离右边50,底部20
-                    contentStream.showText(String.format("第 %d 页 共 %d 页", i + 1, totalPages));
+                    contentStream.newLineAtOffset(pageWidth / 2 - 50, 20);
+                    contentStream.showText(String.format("第 %d 页 共 %d 页", i - skipPages + 1, numberedTotal));
                     contentStream.endText();
                 }
             }

+ 2 - 2
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderServiceImpl.java

@@ -5240,7 +5240,7 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
 
             // 重新生成页码
             byte[] mergedPdfBytes = mergeOutputStream.toByteArray();
-            byte[] pdfWithPageNumbers = pdfService.addPageNumbersToPdf(mergedPdfBytes);
+            byte[] pdfWithPageNumbers = pdfService.addPageNumbersToPdf(mergedPdfBytes, 2);
             
             // 及时释放大对象引用
             mergedPdfBytes = null;
@@ -5336,7 +5336,7 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
 
             // 重新生成页码
             byte[] mergedPdfBytes = mergeOutputStream.toByteArray();
-            byte[] pdfWithPageNumbers = pdfService.addPageNumbersToPdf(mergedPdfBytes);
+            byte[] pdfWithPageNumbers = pdfService.addPageNumbersToPdf(mergedPdfBytes, 0);
             
             // 及时释放大对象引用
             mergedPdfBytes = null;