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