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