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