From 168fc6e251ee41d2f814278b9fe0d123463284ad Mon Sep 17 00:00:00 2001
From: lige <bestlige@outlook.com>
Date: 星期一, 25 十二月 2023 16:23:43 +0800
Subject: [PATCH] 1

---
 ltkj-admin/src/test/java/lgTest.java |  116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 115 insertions(+), 1 deletions(-)

diff --git a/ltkj-admin/src/test/java/lgTest.java b/ltkj-admin/src/test/java/lgTest.java
index bd42a2d..c579529 100644
--- a/ltkj-admin/src/test/java/lgTest.java
+++ b/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,13 +31,119 @@
 
     @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   婧怭DF鏂囦欢璺緞
+     * @param tagetPdfPath 鍔犱簡椤电爜鐨凱DF鏂囦欢璺緞
+     * @description 缁橮DF鏂囦欢娣诲姞椤电爜
+     */
+    public static void addPageNum(String srcPdfPath, String tagetPdfPath) {
+        try {
+            // 杈撳嚭鏂囦欢 娴�
+            FileOutputStream fos = new FileOutputStream(tagetPdfPath);
+
+            // 璇诲彇 婧怭DF鏂囦欢锛岃繘琛屼竴椤典竴椤靛鍒讹紝鎵嶈兘瑙﹀彂 娣诲姞椤电爜鐨�  椤甸潰鐩戝惉浜嬩欢
+            PdfReader reader = new PdfReader(srcPdfPath);
+            // 鑾峰彇 婧愭枃浠舵�婚〉鏁�
+            int num = reader.getNumberOfPages();
+
+            // 鏂板缓鏂囨。锛岄粯璁4澶у皬
+            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 閽堝椤电爜鐢熸垚鐨凱DF浜嬩欢鐩戝惉
+     **/
+    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;
+                // 瑙e喅椤电爜涓枃鏃犳硶鏄剧ず 鎴栬�� 鏄剧ず涓轰贡鐮佺殑闂
+                // 浣嗘槸蹇呴』寮曞叆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;
+        Long a = 12L;
         final long l = a + 10000;
         final String s = "V" + l;
         System.out.println(s);

--
Gitblit v1.8.0