aQiu6 4 달 전
부모
커밋
58cd634b16
4개의 변경된 파일116개의 추가작업 그리고 13개의 파일을 삭제
  1. BIN
      jijinhui1.docx
  2. 95 1
      pom.xml
  3. 3 4
      src/main/java/org/example/mybatisplus/Controller/IndexController.java
  4. 18 8
      src/main/java/org/example/mybatisplus/tools/WordPoiExporter.java

BIN
jijinhui1.docx


+ 95 - 1
pom.xml

@@ -20,6 +20,76 @@
     </properties>
 
     <dependencies>
+            <!-- Docx4J core -->
+            <dependency>
+                <groupId>org.docx4j</groupId>
+                <artifactId>docx4j-JAXB-Internal</artifactId>
+                <version>8.3.14</version>
+            </dependency>
+            <dependency>
+                <groupId>org.docx4j</groupId>
+                <artifactId>docx4j-JAXB-ReferenceImpl</artifactId>
+                <version>11.4.9</version>
+            </dependency>
+            <dependency>
+                <groupId>org.docx4j</groupId>
+                <artifactId>docx4j-export-fo</artifactId>
+                <version>11.4.9</version>
+            </dependency>
+            <!-- iText for PDF conversion -->
+            <dependency>
+                <groupId>com.itextpdf</groupId>
+                <artifactId>itextpdf</artifactId>
+                <version>5.5.13.3</version>
+            </dependency>
+        <!-- https://mvnrepository.com/artifact/jakarta.xml.bind/jakarta.xml.bind-api -->
+        <dependency>
+            <groupId>jakarta.xml.bind</groupId>
+            <artifactId>jakarta.xml.bind-api</artifactId>
+            <version>4.0.2</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime -->
+        <dependency>
+            <groupId>org.glassfish.jaxb</groupId>
+            <artifactId>jaxb-runtime</artifactId>
+            <version>4.0.5</version>
+        </dependency>
+        <dependency>
+            <groupId>jakarta.activation</groupId>
+            <artifactId>jakarta.activation-api</artifactId>
+            <version>2.0.1</version>
+        </dependency>
+        <!-- JAXB API -->
+        <dependency>
+            <groupId>javax.xml.bind</groupId>
+            <artifactId>jaxb-api</artifactId>
+            <version>2.3.1</version>
+        </dependency>
+        <!-- JAXB implementation (JAXB RI) -->
+        <dependency>
+            <groupId>com.sun.xml.bind</groupId>
+            <artifactId>jaxb-impl</artifactId>
+            <version>2.3.1</version>
+        </dependency>
+        <!-- Activation framework -->
+        <dependency>
+            <groupId>javax.activation</groupId>
+            <artifactId>javax.activation-api</artifactId>
+            <version>1.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-compress</artifactId>
+            <version>1.23.0</version>
+        </dependency>
+
+
+        <!-- Apache PDFBox -->
+        <dependency>
+            <groupId>org.apache.pdfbox</groupId>
+            <artifactId>pdfbox</artifactId>
+            <version>2.0.27</version>
+        </dependency>
         <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
         <dependency>
             <groupId>org.freemarker</groupId>
@@ -30,6 +100,31 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-mongodb</artifactId>
         </dependency>
+
+
+
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>3.15</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.commons</groupId>
+                    <artifactId>commons-compress</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml-schemas</artifactId>
+            <version>3.15</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>3.15</version>
+        </dependency>
         <!-- Apache POI -->
         <dependency>
             <groupId>org.apache.poi</groupId>
@@ -42,7 +137,6 @@
             <artifactId>poi-scratchpad</artifactId>
             <version>5.2.3</version>
         </dependency>
-
         <dependency>
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml</artifactId>

+ 3 - 4
src/main/java/org/example/mybatisplus/Controller/IndexController.java

@@ -21,9 +21,6 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.io.*;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
 
 @ApiOperation("控制类")
 @RestController
@@ -58,8 +55,10 @@ public class IndexController {
         try {
             JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(report));
             // 生成Word文档
-            WordPoiExporter.init(wordFilePath,wordExportpath,jsonObject);
+            //WordPoiExporter.init(wordFilePath,wordExportpath,jsonObject);
             // 将Word文档转换为PDF
+
+            WordPoiExporter.convert("G:\\Word\\房屋租赁合同书.docx",pdfFilePath);
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 18 - 8
src/main/java/org/example/mybatisplus/tools/WordPoiExporter.java

@@ -4,21 +4,15 @@ import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import org.apache.commons.lang.StringUtils;
-import org.apache.pdfbox.pdmodel.font.FontMapper;
 import org.apache.poi.xwpf.usermodel.*;
 import org.docx4j.Docx4J;
 import org.docx4j.convert.out.FOSettings;
 import org.docx4j.fonts.IdentityPlusMapper;
 import org.docx4j.fonts.Mapper;
-import org.docx4j.fonts.PhysicalFont;
-import org.docx4j.fonts.PhysicalFonts;
 import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
 
 import java.io.*;
-import java.net.URI;
-import java.net.URL;
 import java.util.List;
-import java.util.Map;
 
 public class WordPoiExporter {
 
@@ -209,6 +203,22 @@ public class WordPoiExporter {
     }
     public static void convert(String inputPath, String outputPath) {
         try {
+            // 加载 DOCX 文件
+            WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new File(inputPath));
+
+            // 创建 FOSettings 对象
+            FOSettings foSettings = Docx4J.createFOSettings();
+            foSettings.setWmlPackage(wordMLPackage);
+
+            // 指定输出为 PDF
+            foSettings.setApacheFopMime("application/pdf");
+
+            // 创建输出流
+            OutputStream outputStream = new FileOutputStream(new File(outputPath));
+
+            // 执行转换
+            Docx4J.toFO(foSettings, outputStream, Docx4J.FLAG_NONE);
+
             // 创建字体映射器
             Mapper fontMapper = new IdentityPlusMapper();
 
@@ -221,13 +231,13 @@ public class WordPoiExporter {
 //
 //            PhysicalFonts.addPhysicalFont(fontUri1);
 
-            WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new File(inputPath));
+            /*WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new File(inputPath));
             FOSettings foSettings = Docx4J.createFOSettings();
             foSettings.setWmlPackage(wordMLPackage);
 
             try (FileOutputStream fos = new FileOutputStream(outputPath)) {
                 Docx4J.toPDF(wordMLPackage, fos);
-            }
+            }*/
 
         } catch (Exception e) {
             e.printStackTrace();