Ver Fonte

pdf转html,并实现鼠标移出内容隐藏

zoro há 1 ano atrás
pai
commit
17adfde613

+ 35 - 0
html/newPdf.html

@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <script src="pdf.js"></script>
+</head>
+<body>
+<div id="pdfViewer"></div>
+
+<script>
+    var pdfViewer = document.getElementById('pdfViewer');
+    var pdfUrl = "E:\\pdf\\DM8_DIsql使用手册.pdf";
+
+    PDFJS.getDocument(pdfUrl).then(function (pdfDoc) {
+        var totalPages = pdfDoc.numPages;
+
+        for (var i = 1; i <= totalPages; i++) {
+            pdfDoc.getPage(i).then(function (page) {
+                var canvas = document.createElement('canvas');
+                pdfViewer.appendChild(canvas);
+
+                var context = canvas.getContext('2d');
+                var viewport = page.getViewport(canvas.width / page.getViewport(1.0).width);
+
+                canvas.height = viewport.height;
+
+                page.render({
+                    canvasContext: context,
+                    viewport: viewport
+                });
+            });
+        }
+    });
+</script>
+</body>
+</html>

+ 24 - 17
pom.xml

@@ -61,6 +61,13 @@
         <version>5.5.10</version>
     </dependency>
 
+<!-- html转pdf-->
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>html2pdf</artifactId>
+            <version>3.0.2</version>
+        </dependency>
+
     <dependency>
         <groupId>org.codehaus.plexus</groupId>
         <artifactId>plexus-component-annotations</artifactId>
@@ -145,17 +152,17 @@
     <!--            <version>8.0.2</version>-->
     <!--        </dependency>-->
     <!--                Free Spire依赖 免费版会添加水印不能用-->
-    <!--        <dependency>-->
-    <!--            <groupId>e-iceblue</groupId>-->
-    <!--            <artifactId>spire.pdf</artifactId>-->
-    <!--            <version>10.1.5</version>-->
-    <!--        </dependency>-->
+            <dependency>
+                <groupId>e-iceblue</groupId>
+                <artifactId>spire.pdf</artifactId>
+                <version>10.1.5</version>
+            </dependency>
 
-    <!--        <dependency>-->
-    <!--            <groupId>e-iceblue</groupId>-->
-    <!--            <artifactId>spire.pdf.free</artifactId>-->
-    <!--            <version>3.9.0</version>-->
-    <!--        </dependency>-->
+<!--            <dependency>-->
+<!--                <groupId>e-iceblue</groupId>-->
+<!--                <artifactId>spire.pdf.free</artifactId>-->
+<!--                <version>3.9.0</version>-->
+<!--            </dependency>-->
 
 
     <!--        <dependency>-->
@@ -165,13 +172,13 @@
     <!--        </dependency>-->
         </dependencies>
 
-    <!--    <repositories>-->
-    <!--        <repository>-->
-    <!--            <id>com.e-iceblue</id>-->
-    <!--            <name>e-iceblue</name>-->
-    <!--            <url>https://repo.e-iceblue.cn/repository/maven-public/</url>-->
-    <!--        </repository>-->
-    <!--    </repositories>-->
+        <repositories>
+            <repository>
+                <id>com.e-iceblue</id>
+                <name>e-iceblue</name>
+                <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
+            </repository>
+        </repositories>
 
 
     <build>

+ 43 - 42
src/main/java/com/shcd/ghjg_pdf/service/impl/PDFServiceFreeSpire.java

@@ -1,47 +1,48 @@
-//package com.shcd.ghjg_pdf.service.impl;
-//
-//import com.spire.pdf.FileFormat;
-//import com.spire.pdf.PdfDocument;
-//import com.spire.pdf.PdfPageBase;
-//import com.spire.pdf.graphics.PdfBrush;
-//import com.spire.pdf.graphics.PdfBrushes;
-//import com.spire.pdf.graphics.PdfFontBase;
-//import com.spire.pdf.graphics.PdfTrueTypeFont;
-//import jakarta.annotation.PostConstruct;
-//import org.springframework.stereotype.Component;
-//
-//import java.awt.*;
-//
-//@Component
-//public class PDFServiceFreeSpire {
-//    //不可使用,会自动增加水印
-//    @PostConstruct
-//    public void pdfFreeSpire(){
-//        //创建PdfDocument对象
-//        PdfDocument doc = new PdfDocument();
-//
-//        //加载一个PDF文档
-//        doc.loadFromFile("E:\\pdf\\DM8_DIsql使用手册.pdf");
+package com.shcd.ghjg_pdf.service.impl;
+
+import com.spire.pdf.FileFormat;
+import com.spire.pdf.PdfDocument;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Component
+public class PDFServiceFreeSpire {
+    //不可使用,会自动增加水印
+    //@PostConstruct
+    public void pdfFreeSpire() {
+        //创建PdfDocument对象
+        PdfDocument pdfDocument = new PdfDocument();
+        //加载一个PDF文档
+        pdfDocument.loadFromFile("E:\\pdf\\DM8_DIsql使用手册_水印.pdf");
+        pdfDocument.saveToFile("E:\\pdf\\DM8_DIsql使用手册_水印2.html", FileFormat.HTML);
 //        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋体", Font.PLAIN, 50));
-//        for (int i = 0; i < doc.getPages().getCount(); i++) {
+//        int count = doc.getPages().getCount();
+//        //代表是10的倍数
+//        int circle = count / 10;
+//        int left = count % 10;
+//        //递归法做水印
+//        for (int i = 0; i < count; i++) {
+//            PdfDocument pdfDocument = new PdfDocument();
+//            pdfDocument.getPageSettings().setMargins(new PdfMargins(0, 0, 0, 0));
 //            PdfPageBase pageBase = doc.getPages().get(i);
 //            pageBase.getCanvas().setTransparency(0.8);
-//            pageBase.getCanvas().translateTransform(pageBase.getCanvas().getSize().getWidth()/2,pageBase.getCanvas().getSize().getHeight()/2);
+//            pageBase.getCanvas().translateTransform(pageBase.getCanvas().getSize().getWidth() / 2, pageBase.getCanvas().getSize().getHeight() / 2);
 //            pageBase.getCanvas().rotateTransform(-45);
-//            pageBase.getCanvas().drawString("test",font, PdfBrushes.getDarkBlue(),0,0);
+//            pageBase.getCanvas().drawString("test", font, PdfBrushes.getDarkBlue(), 0, 0);
 //        }
-//        //通过JavaScript设置过期时间,过期警告信息并关闭文档
-////        String javaScript =
-////                "app.alert('该文档已过期,请联系我们获取新文档',1);"
-////                + "this.closeDoc(); ";
-//
-//        //根据JS创建PdfJavaScriptAction
-//        //PdfJavaScriptAction js = new PdfJavaScriptAction(javaScript);
-//
-//        //将PdfJavaScriptAction设置为文档打开后的动作
-//        //doc.setAfterOpenAction(js);
-//
-//        //保存文档
-//        doc.saveToFile("E:\\pdf\\test.pdf", FileFormat.PDF);
-//    }
-//}
+        //通过JavaScript设置过期时间,过期警告信息并关闭文档
+//        String javaScript =
+//                "app.alert('该文档已过期,请联系我们获取新文档',1);"
+//                + "this.closeDoc(); ";
+
+        //根据JS创建PdfJavaScriptAction
+        //PdfJavaScriptAction js = new PdfJavaScriptAction(javaScript);
+
+        //将PdfJavaScriptAction设置为文档打开后的动作
+        //doc.setAfterOpenAction(js);
+
+        //保存文档
+    }
+
+}

+ 6 - 0
src/main/java/com/shcd/ghjg_pdf/service/impl/PDFServiceITextImpl.java

@@ -11,8 +11,12 @@ import com.itextpdf.text.pdf.BaseFont;
 import com.itextpdf.text.pdf.PdfContentByte;
 import com.itextpdf.text.pdf.PdfReader;
 import com.itextpdf.text.pdf.PdfStamper;
+import com.itextpdf.text.pdf.parser.PdfTextExtractor;
+import com.itextpdf.html2pdf.HtmlConverter;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.PostConstruct;
+import java.io.FileWriter;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 
@@ -35,6 +39,8 @@ public class PDFServiceITextImpl {
         pdfReader.close();
 
         PdfReader reader = new PdfReader("E:\\pdf\\encrypted.pdf");
+        //HtmlConverter.convertToHtml(reader, new FileWriter("E:\\pdf\\encrypted.html"));
+
 //        PdfStamper stamper = new PdfStamper(reader, Files.newOutputStream(Paths.get("E:\\pdf\\encryptedwithJS.pdf")));
 //        //设置密码
 //        stamper.setEncryption("123456".getBytes(), "123457".getBytes(), PdfWriter.ALLOW_PRINTING, PdfWriter.STANDARD_ENCRYPTION_40);

+ 36 - 37
src/main/java/com/shcd/ghjg_pdf/service/impl/PDFServicePDFBOXImpl.java

@@ -1,37 +1,36 @@
-//package com.shcd.ghjg_pdf.service.impl;
-//
-//import jakarta.annotation.PostConstruct;
-//import org.apache.pdfbox.pdmodel.PDDocument;
-//import org.apache.pdfbox.pdmodel.PDPageContentStream;
-//import org.apache.pdfbox.pdmodel.font.PDType1Font;
-//import org.springframework.stereotype.Component;
-//import java.io.File;
-//import java.io.IOException;
-//import java.util.Date;
-//
-//@Component
-//public class PDFServicePDFBOXImpl{
-//    //@PostConstruct
-//    public void PDFEncode() throws IOException {
-//        PDDocument load = PDDocument.load(new File("E:\\pdf\\DM8_DIsql使用手册.pdf"));
-//        for (int i = 0; i < load.getNumberOfPages(); i++) {
-//            PDPageContentStream contentStream = new PDPageContentStream(load, load.getPage(i), PDPageContentStream.AppendMode.APPEND, true, true);
-//            // 设置字体和字号
-//            contentStream.setFont(PDType1Font.HELVETICA_BOLD, 36);
-//            //设置透明度
-//            contentStream.setNonStrokingColor(200,200, 200, 150);
-//            //添加水印
-//            contentStream.beginText();
-//            contentStream.newLineAtOffset(100,100);
-//            Date date = new Date();
-//            int year = date.getYear() + 1900;
-//            int month = date.getMonth() + 1;
-//            int day = date.getDay();
-//            contentStream.showText(year + "-" + month + "-" + day);
-//            contentStream.endText();
-//            contentStream.close();
-//        }
-//        load.save("E:\\pdf\\DM8_DIsql使用手册_水印.pdf");
-//        load.close();
-//    }
-//}
+package com.shcd.ghjg_pdf.service.impl;
+
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPageContentStream;
+import org.apache.pdfbox.pdmodel.font.PDType1Font;
+import org.springframework.stereotype.Component;
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+
+@Component
+public class PDFServicePDFBOXImpl{
+    //@PostConstruct
+    public void PDFEncode() throws IOException {
+        PDDocument load = PDDocument.load(new File("E:\\pdf\\DM8_DIsql使用手册.pdf"));
+        for (int i = 0; i < load.getNumberOfPages(); i++) {
+            PDPageContentStream contentStream = new PDPageContentStream(load, load.getPage(i), PDPageContentStream.AppendMode.APPEND, true, true);
+            // 设置字体和字号
+            contentStream.setFont(PDType1Font.HELVETICA_BOLD, 36);
+            //设置透明度
+            contentStream.setNonStrokingColor(200,200, 200, 150);
+            //添加水印
+            contentStream.beginText();
+            contentStream.newLineAtOffset(100,100);
+            Date date = new Date();
+            int year = date.getYear() + 1900;
+            int month = date.getMonth() + 1;
+            int day = date.getDay();
+            contentStream.showText(year + "-" + month + "-" + day);
+            contentStream.endText();
+            contentStream.close();
+        }
+        load.save("E:\\pdf\\DM8_DIsql使用手册_水印.pdf");
+        load.close();
+    }
+}

+ 1 - 1
src/main/java/com/shcd/ghjg_pdf/service/impl/test.java

@@ -10,7 +10,7 @@ import static com.shcd.ghjg_pdf.service.impl.PdfConvertHtmlUtil.*;
 
 @Component
 public class test {
-    @PostConstruct
+   // @PostConstruct
     public void test(){
         File file = new File("E:\\pdf\\encrypted.pdf");
         String htmlPath = "E:\\pdf\\encrypted.html";

+ 3 - 2
src/test/java/com/shcd/ghjg_pdf/test.java

@@ -8,7 +8,8 @@ import java.util.Date;
 public class test {
     @Test
     public void test(){
-        Date date = new Date();
-        System.out.println(date);
+        Integer i = 35;
+        System.out.println( i / 10);
+        System.out.println(i %10);
     }
 }