From cfdafcf22dbd868c9876d37efbd92b97ba014bef Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 26 三月 2025 09:17:01 +0800
Subject: [PATCH] 优化

---
 server/service/src/main/java/com/doumee/core/annotation/excel/ExcelToPdfToolNew.java |   85 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 85 insertions(+), 0 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelToPdfToolNew.java b/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelToPdfToolNew.java
new file mode 100644
index 0000000..b865a52
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelToPdfToolNew.java
@@ -0,0 +1,85 @@
+package com.doumee.core.annotation.excel;
+
+import com.jacob.activeX.ActiveXComponent;
+import com.jacob.com.ComThread;
+import com.jacob.com.Dispatch;
+import com.jacob.com.Variant;
+
+
+public class ExcelToPdfToolNew {
+
+    /**
+     * 浣跨敤jacob瀹炵幇excel杞琍DF
+     *
+     */
+
+    public static void excelToPdf(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:\\4.xlsx";
+        String outputPdfPath = "D:\\44.pdf";
+
+        excelToPdf(inputExcelPath, outputPdfPath);
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3