From d68d798881163134cb5f59fc4a8d924809119a3c Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期二, 17 十月 2023 12:59:56 +0800
Subject: [PATCH] #fropensagresxdocreport

---
 src/main/java/com/zy/crm/manager/utils/WordUtils.java               |   31 ++++++++++++++++++++++++++++---
 src/main/java/com/zy/crm/manager/controller/ContractController.java |    6 +++++-
 pom.xml                                                             |   18 ++++++++++++++++++
 3 files changed, 51 insertions(+), 4 deletions(-)

diff --git a/pom.xml b/pom.xml
index 32b5017..a07e7e4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -135,6 +135,24 @@
             <version>4.1.2</version>
         </dependency>
 
+        <!--word杞琾df-->
+        <dependency>
+            <groupId>fr.opensagres.xdocreport</groupId>
+            <artifactId>fr.opensagres.poi.xwpf.converter.pdf-gae</artifactId>
+            <version>2.0.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.documents4j</groupId>
+            <artifactId>documents4j-local</artifactId>
+            <version>1.0.3</version>
+        </dependency>
+        <dependency>
+            <groupId>com.documents4j</groupId>
+            <artifactId>documents4j-transformer-msoffice-word</artifactId>
+            <version>1.0.3</version>
+        </dependency>
+
         <dependency>
             <groupId>com.aliyun</groupId>
             <artifactId>alibabacloud-dysmsapi20170525</artifactId>
diff --git a/src/main/java/com/zy/crm/manager/controller/ContractController.java b/src/main/java/com/zy/crm/manager/controller/ContractController.java
index 0e120e9..931f1b4 100644
--- a/src/main/java/com/zy/crm/manager/controller/ContractController.java
+++ b/src/main/java/com/zy/crm/manager/controller/ContractController.java
@@ -240,7 +240,11 @@
             /////////////////////////鐢熸垚Tab琛ㄦ牸鏁版嵁/////////////////////////
 
             String fileName = this.getClass().getClassLoader().getResource("contractTemplate/" + contractTemplate + ".docx").getPath();//鑾峰彇鏂囦欢璺緞
-            return WordUtils.generate(fileName, map, tabParam);
+
+//            String outPdfPath = fileName.split("\\.")[0]+".pdf";
+            ResponseEntity<InputStreamResource> generate = WordUtils.generate(fileName, map, tabParam);
+//            WordUtils.documents4jWordToPdf(fileName,outPdfPath);
+            return generate;
         } catch (Exception e) {
             return null;
         }
diff --git a/src/main/java/com/zy/crm/manager/utils/WordUtils.java b/src/main/java/com/zy/crm/manager/utils/WordUtils.java
index 74b58ac..31be1b6 100644
--- a/src/main/java/com/zy/crm/manager/utils/WordUtils.java
+++ b/src/main/java/com/zy/crm/manager/utils/WordUtils.java
@@ -1,7 +1,8 @@
 package com.zy.crm.manager.utils;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
+import com.documents4j.api.DocumentType;
+import com.documents4j.api.IConverter;
+import com.documents4j.job.LocalConverter;
 import org.apache.poi.xwpf.usermodel.*;
 import org.apache.xmlbeans.XmlCursor;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
@@ -13,7 +14,6 @@
 import java.io.*;
 import java.text.DecimalFormat;
 import java.text.NumberFormat;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -50,6 +50,31 @@
                 .body(resource);
     }
 
+    /*
+    * word杞琍DF
+    * */
+    public static void documents4jWordToPdf(String sourcePath, String targetPath) {
+        File inputWord = new File(sourcePath);
+        File outputFile = new File(targetPath);
+        try {
+            InputStream docxInputStream = new FileInputStream(inputWord);
+            OutputStream outputStream = new FileOutputStream(outputFile);
+            IConverter converter = LocalConverter.builder().build();
+            boolean execute = converter.convert(docxInputStream)
+                    .as(DocumentType.DOCX)
+                    .to(outputStream)
+                    .as(DocumentType.PDF).schedule().get();
+            outputStream.close();
+            docxInputStream.close();
+
+            System.out.println("杞崲瀹屾瘯 targetPath = "+outputFile.getAbsolutePath());
+            converter.shutDown();
+            return;
+        } catch (Exception e) {
+            System.out.println("[documents4J] word杞琾df澶辫触:"+e.toString());
+        }
+    }
+
     /**
      * 澶勭悊娈佃惤涓枃鏈紝鏇挎崲鏂囨湰涓畾涔夌殑鍙橀噺锛�
      * @param param 闇�瑕佹浛鎹㈢殑鍙橀噺鍙婂彉閲忓��

--
Gitblit v1.9.1