|
@@ -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();
|
|
|
}
|
|
|
+ }
|
|
|
}
|