Browse Source

Merge branch 'master' of http://47.101.207.123:3000/zoro/pdf

# Conflicts:
#	src/main/java/com/shcd/ghjg_pdf/service/impl/PDFServicePDFBOXImpl.java
zoro 5 months ago
parent
commit
fcb78c38ef

+ 81 - 17
src/main/java/com/shcd/ghjg_pdf/service/impl/PDFServiceITextImpl.java

@@ -1,15 +1,17 @@
 package com.shcd.ghjg_pdf.service.impl;
 
-
 //import com.itextpdf.kernel.pdf.EncryptionConstants;
 //import com.itextpdf.kernel.pdf.EncryptionProperties;
 //import com.itextpdf.kernel.pdf.PdfEncryptor;
 //import com.itextpdf.kernel.pdf.PdfReader;
 
 import com.itextpdf.text.BaseColor;
+import com.itextpdf.text.Element;
 import com.itextpdf.text.pdf.*;
 import com.itextpdf.text.pdf.parser.PdfTextExtractor;
 import com.itextpdf.html2pdf.HtmlConverter;
+import java.util.Optional;
+import org.apache.pdfbox.util.Matrix;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
@@ -19,22 +21,25 @@ import java.nio.file.Paths;
 
 @Component
 public class PDFServiceITextImpl {
-    //@PostConstruct
-    public void pdfEncode() throws Exception {
-        PdfReader pdfReader = new PdfReader("E:\\pdf\\SMU749-050-09JS完整稳性计算报告.pdf");
-        PdfStamper pdfStamper = new PdfStamper(pdfReader, Files.newOutputStream(Paths.get("E:\\pdf\\encrypted.pdf")));
-        for (int i = 1; i <= pdfReader.getNumberOfPages(); i++) {
-            PdfContentByte underContent = pdfStamper.getUnderContent(i);
-            underContent.beginText();
-            underContent.setFontAndSize(BaseFont.createFont(), 36f);
-            underContent.setColorFill(BaseColor.RED);
-            underContent.showTextAligned(PdfContentByte.ALIGN_CENTER, "test", 300,
-                    400, 45);
-            underContent.endText();
-        }
-        pdfStamper.close();
-        pdfReader.close();
-        System.out.println("finish");
+
+  //    @PostConstruct
+  public void pdfEncode() throws Exception {
+    PdfReader pdfReader = new PdfReader(
+        "E:\\DataShareFolder\\shipDrawArchive\\SMU749-050-09JS完整稳性计算报告.pdf");
+    PdfStamper pdfStamper = new PdfStamper(pdfReader,
+        Files.newOutputStream(Paths.get("E:\\pdf\\encrypted.pdf")));
+    for (int i = 1; i <= pdfReader.getNumberOfPages(); i++) {
+      PdfContentByte underContent = pdfStamper.getUnderContent(i);
+      underContent.beginText();
+      underContent.setFontAndSize(BaseFont.createFont(), 36f);
+      underContent.setColorFill(BaseColor.RED);
+      underContent.showTextAligned(PdfContentByte.ALIGN_CENTER, "soutsssss", 300,
+          400, 45);
+      underContent.endText();
+    }
+    pdfStamper.close();
+    pdfReader.close();
+    System.out.println("finish");
         /*PdfReader reader = new PdfReader("E:\\pdf\\encrypted.pdf");
         //HtmlConverter.convertToHtml(reader, new FileWriter("E:\\pdf\\encrypted.html"));
 
@@ -56,5 +61,64 @@ public class PDFServiceITextImpl {
         stamper.flush();
         stamper.close();
         reader.close();*/
+  }
+
+  @PostConstruct
+  public void generatePdf() {
+    Boolean isFull  = true;
+    try {
+      // 原PDF文件
+      PdfReader reader = new PdfReader(
+          "E:\\DataShareFolder\\shipDrawArchive\\SMU749-050-09JS完整稳性计算报告.pdf");
+      // 输出的PDF文件内容
+      PdfStamper stamper = new PdfStamper(reader, Files.newOutputStream(
+          Paths.get("E:\\DataShareFolder\\zip\\SMU749-050-09JS完整稳性计算报告.pdf")));
+      // 字体 来源于 itext-asian jar包
+      BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", true);
+      PdfGState gs = new PdfGState();
+      // 设置透明度
+      gs.setFillOpacity(0.2f);
+      gs.setStrokeOpacity(0.2f);
+
+      int totalPage = reader.getNumberOfPages() + 1;
+      for (int i = 1; i < totalPage; i++) {
+        // 内容上层
+        float pageHeight = reader.getPageSize(i).getHeight();
+        float pageWidth = reader.getPageSize(i).getWidth();
+        PdfContentByte content = stamper.getOverContent(i);
+        content.beginText();
+        if (isFull) {
+          for (int h = 10; h < pageHeight; h = h + 300) {
+            for (int w = -10; w < pageWidth; w = w + 200) {
+              // 字体添加透明度
+              content.setGState(gs);
+              // 添加字体大小等
+              content.setFontAndSize(baseFont, 30);
+              content.showTextAligned(Element.ALIGN_BOTTOM, "gl045-沈德亿",
+                  w + 25, h,45);
+              content.showTextAligned(Element.ALIGN_BOTTOM, "2024-03-19 17:03:01",
+                  w, h + 25 ,45);
+            }
+          }
+        } else {
+          // 字体添加透明度
+          content.setGState(gs);
+          // 添加字体大小等
+          content.setFontAndSize(baseFont, 75);
+          // 添加范围
+          content.showTextAligned(Element.ALIGN_BOTTOM, "gl045-沈德亿",
+              200, 200, 45);
+          content.showTextAligned(Element.ALIGN_BOTTOM, "2024-03-19 17:03:01",
+              100, 250, 45);
+        }
+        content.endText();
+      }
+      // 关闭
+      stamper.close();
+      reader.close();
+
+    } catch (Exception e) {
+      e.printStackTrace();
     }
+  }
 }

+ 9 - 13
src/main/java/com/shcd/ghjg_pdf/service/impl/PDFServicePDFBOXImpl.java

@@ -4,18 +4,16 @@ import com.itextpdf.text.DocumentException;
 import com.itextpdf.text.pdf.PdfReader;
 import com.itextpdf.text.pdf.PdfStamper;
 import com.itextpdf.text.pdf.PdfWriter;
+import java.awt.Color;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.PDPageContentStream;
-import org.apache.pdfbox.pdmodel.font.PDType0Font;
 import org.apache.pdfbox.pdmodel.font.PDType1Font;
 import org.apache.pdfbox.util.Matrix;
-import org.springframework.core.io.ClassPathResource;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
@@ -23,23 +21,21 @@ import java.util.Date;
 
 @Component
 public class PDFServicePDFBOXImpl {
-    //@PostConstruct
+//    @PostConstruct
     public void PDFEncode() throws IOException, DocumentException {
         int rowSpace=150;
-        int colSpace=150;
+        int colSpace=200;
         Date date = new Date();
         int year = date.getYear() + 1900;
         int month = date.getMonth() + 1;
         int day = date.getDay();
-        PDDocument load = PDDocument.load(new File("E:\\pdf\\SMU749-050-09JS完整稳性计算报告.pdf"));
-        ClassPathResource classPathResource = new ClassPathResource("font/simhei.ttf");
-        PDType0Font load1 = PDType0Font.load(load, Files.newInputStream(Paths.get(classPathResource.getFile().getAbsolutePath())), true);
+        PDDocument load = PDDocument.load(new File("E:\\DataShareFolder\\shipDrawArchive\\SMU749-050-09JS完整稳性计算报告.pdf"));
         for (int i = 0; i < load.getNumberOfPages(); i++) {
             PDPageContentStream contentStream = new PDPageContentStream(load, load.getPage(i), PDPageContentStream.AppendMode.APPEND, true, true);
             // 设置字体和字号
-            contentStream.setFont(load1, 36);
+            contentStream.setFont(PDType1Font.HELVETICA_BOLD, 36);
             //设置透明度
-            contentStream.setNonStrokingColor(255);
+            contentStream.setNonStrokingColor(new Color(200, 200, 200));
             //添加水印
             contentStream.beginText();
             PDPage page = load.getPage(i);
@@ -48,8 +44,8 @@ public class PDFServicePDFBOXImpl {
             //pdf修改水印
             for (int h = 10; h < pageHeight; h = h + rowSpace) {
                 for (int w = - 10; w < pageWidth; w = w + colSpace) {
-                    contentStream.setTextMatrix(Matrix.getRotateInstance(0.6, w, h));
-                    contentStream.showText("毛" + year + "-" + month + "-" + day);
+                    contentStream.setTextMatrix(Matrix.getRotateInstance(0.3, w, h));
+                    contentStream.showText(year + "-" + month + "-" + day);
                 }
             }
             //contentStream.newLineAtOffset(100, 100);
@@ -58,7 +54,7 @@ public class PDFServicePDFBOXImpl {
             contentStream.endText();
             contentStream.close();
         }
-        load.save("E:\\pdf\\SMU749-050-09JS完整稳性计算报告水印版.pdf");
+        load.save("E:\\DataShareFolder\\pdf\\SMU749-050-09JS完整稳性计算报告水印版.pdf");
         load.close();
 //        PdfReader reader = new PdfReader("E:\\pdf\\SMU749-050-09JS完整稳性计算报告水印版.pdf");
 //        PdfStamper stamper = new PdfStamper(reader, Files.newOutputStream(Paths.get("E:\\pdf\\SMU749-050-09JS完整稳性计算报告水印密码版.pdf")));