zjh
2024-05-21 5a8f3e426736bff2f8678a47d05a3da24af6f470
ltkj-admin/src/test/java/lgTest.java
@@ -1,6 +1,8 @@
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import com.ltkj.LtkjApplication;
import com.ltkj.hosp.domain.SqlTest;
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;
@@ -10,8 +12,11 @@
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
/**
 * @Company: 西安路泰科技有限公司
@@ -26,14 +31,119 @@
    @Resource
    private TestMapper testMapper;
    @Test
    public void lige() {
        final SqlTest list = testMapper.getList();
        System.out.println(list);
//        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   源PDF文件路径
     * @param tagetPdfPath 加了页码的PDF文件路径
     * @description 给PDF文件添加页码
     */
    public static void addPageNum(String srcPdfPath, String tagetPdfPath) {
        try {
            // 输出文件 流
            FileOutputStream fos = new FileOutputStream(tagetPdfPath);
            // 读取 源PDF文件,进行一页一页复制,才能触发 添加页码的  页面监听事件
            PdfReader reader = new PdfReader(srcPdfPath);
            // 获取 源文件总页数
            int num = reader.getNumberOfPages();
            // 新建文档,默认A4大小
            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 针对页码生成的PDF事件监听
     **/
    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;
                // 解决页码中文无法显示 或者 显示为乱码的问题
                // 但是必须引入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);