From eb1456da5058bbb08569da4fcae768c3e043cc39 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 17 五月 2024 12:00:07 +0800
Subject: [PATCH] 提交一把

---
 server/service/pom.xml                                                                  |   10 +++++
 server/service/src/main/java/com/doumee/core/annotation/excel/ExcelToPdfToolNewSev.java |   91 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 101 insertions(+), 0 deletions(-)

diff --git a/server/service/pom.xml b/server/service/pom.xml
index c150726..73e5822 100644
--- a/server/service/pom.xml
+++ b/server/service/pom.xml
@@ -21,10 +21,20 @@
             <artifactId>dianziqian</artifactId>
             <version>1.0.0-SNAPSHOT</version>
         </dependency>
+        <!--jacob渚濊禆-->
+        <dependency>
+            <groupId>com.jacob</groupId>
+            <artifactId>jacob</artifactId>
+            <version>1.19</version>
+            <scope>system</scope>
+            <!--鏈湴鐨刯acob.jar鐨勮矾寰�-->
+            <systemPath>${project.basedir}/lib/jacob.jar</systemPath>
+        </dependency>
     </dependencies>
     <properties>
         <maven.compiler.source>8</maven.compiler.source>
         <maven.compiler.target>8</maven.compiler.target>
+        <log4j2.version>2.17.2</log4j2.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
diff --git a/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelToPdfToolNewSev.java b/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelToPdfToolNewSev.java
new file mode 100644
index 0000000..94f27c0
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelToPdfToolNewSev.java
@@ -0,0 +1,91 @@
+package com.doumee.core.annotation.excel;import java.io.*;
+
+import com.jacob.activeX.ActiveXComponent;
+import com.jacob.com.ComThread;
+import com.jacob.com.Dispatch;
+import com.jacob.com.Variant;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import com.itextpdf.text.Document;
+import com.itextpdf.text.DocumentException;
+import com.itextpdf.text.pdf.PdfWriter;
+
+
+public class ExcelToPdfToolNewSev {
+
+        /**
+         * 浣跨敤jacob瀹炵幇excel杞琍DF
+         *
+         * @param inputFilePath 瀵煎叆Excel鏂囦欢璺緞
+         * @param outputFilePath 瀵煎嚭PDF鏂囦欢璺緞
+         */
+        public static void jacobExcelToPDF(String inputFilePath, String outputFilePath) {
+            ActiveXComponent ax = null;
+            Dispatch excel = null;
+            try {
+                ComThread.InitSTA();
+                ax = new ActiveXComponent("Excel.Application");
+                ax.setProperty("Visible", new Variant(false));
+                //        绂佺敤瀹�
+                ax.setProperty("AutomationSecurity", new Variant(3));
+                Dispatch excels = ax.getProperty("Workbooks").toDispatch();
+                Object[] obj = {
+                        inputFilePath,
+                        new Variant(false),
+                        new Variant(false)
+                };
+                excel = Dispatch.invoke(excels, "Open", Dispatch.Method, obj, new int[9]).toDispatch();
+                Dispatch currentSheet = Dispatch.get(excel,
+                        "ActiveSheet").toDispatch();
+                // 鑾峰彇椤甸潰璁剧疆
+                Dispatch pageSetup = Dispatch.get(currentSheet, "PageSetup") .toDispatch();
+                Dispatch.put(pageSetup, "Orientation", new Variant(2));
+                Dispatch.put(pageSetup, "FitToPagesTall", new Variant(0));
+                Dispatch.put(pageSetup, "FitToPagesWide", new Variant(1));
+                // 鑾峰彇椤甸潰璁剧疆
+//                Dispatch.put(pageSetup, "PaperSize", pageSize);
+                // 鍐呭缂╂斁
+//                Dispatch.put(pageSetup, "Zoom", new Variant(false));
+
+                //                Dispatch Application = Dispatch.get(currentSheet, "Application") .toDispatch();
+//                Dispatch.put(pageSetup, "PaperSize", pageSize);
+//                Dispatch.put(Application, "ActivePrinter", "Microsoft Print to PDF");
+                // 鍐呭缂╂斁
+//                Dispatch.put(pageSetup, "Orientation", new Variant(2));
+//                Dispatch.put(pageSetup, "Zoom", new Variant(false));
+//                Dispatch.put(pageSetup, "FitToPagesWide", new Variant(1));
+//                Dispatch.put(pageSetup, "FitToPagesTall", new Variant(1));
+
+//                Dispatch.put(pageSetup, "PaperSize",  new Variant(8)); // A3鏄�8锛孉4鏄�9锛孉5鏄�11绛夌瓑
+
+                //        杞崲鏍煎紡
+                Object[] obj2 = {
+                        //                PDF鏍煎紡绛変簬0
+                        new Variant(0),
+                        outputFilePath,
+                        //                0=鏍囧噯锛堢敓鎴愮殑PDF鍥剧墖涓嶄細妯$硦锛夛紝1=鏈�灏忕殑鏂囦欢
+                        new Variant(0)
+                };
+                Dispatch.invoke(excel, "ExportAsFixedFormat", Dispatch.Method, obj2, new int[1]);
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw e;
+            } finally {
+                if (excel != null) {
+                    Dispatch.call(excel, "Close", new Variant(false));
+                }
+                if (ax != null) {
+                    ax.invoke("Quit", new Variant[]{});
+                    ax = null;
+                }
+                ComThread.Release();
+            }
+        }
+
+    public static void main(String[] args) {
+        String inputExcelPath = "D:\\2.xlsx";
+        String outputPdfPath = "D:\\22.pdf";
+
+        jacobExcelToPDF(inputExcelPath, outputPdfPath);
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3