From f066b3cdec6b3b5f88dcbd675ccfe065ae5cd828 Mon Sep 17 00:00:00 2001 From: yxt_djz Date: Fri, 18 Nov 2022 09:40:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B0=B4=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yxt/common/base/utils/WordUtils.java | 164 +++++++++--------- 1 file changed, 85 insertions(+), 79 deletions(-) diff --git a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java index c06fa39..600adfc 100644 --- a/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java +++ b/yxt-common/yxt-common-base/src/main/java/com/yxt/common/base/utils/WordUtils.java @@ -110,7 +110,7 @@ public class WordUtils { // 打开文档 document = Dispatch.call(documents, "Open", wordFile, false, true).toDispatch(); // 如果文件存在的话,不会覆盖,会直接报错,所以我们需要判断文件是否存在 - //addWatermark(wordFile,wordFile,mark); + addWatermark(app,documents,document,wordFile,"D:\\anrui\\1.doc",mark); //setWaterMark(app,mark); File targetFile = new File(pdfPath); if (!targetFile.exists()) { @@ -139,88 +139,13 @@ public class WordUtils { } } - public static void main(String[] args) { - Map dataMap = new HashMap(); - String curDate = DateUtils.dateConvertStr(new Date(), "yyyy年MM月dd日"); - dataMap.put("partyA", "甲方卖出方"); - dataMap.put("partyB", "乙方买受方"); - // 图片 -// dataMap.put("imgStr1", getImageStr("D:\\fileTest\\name.png")); -// dataMap.put("imgStr2", getImageStr("D:\\fileTest\\zhang.png")); - // 列表 - Car car1 = new Car("奔驰", "1001", "v10"); - Car car2 = new Car("宝马", "1002", "v10"); - Car car3 = new Car("奥迪", "1003", "v10"); - List list = new ArrayList<>(); - list.add(car1); - list.add(car2); - list.add(car3); - dataMap.put("carList", list); - - dataMap.put("money", "1"); - dataMap.put("money1", "2"); - dataMap.put("money2", "3"); - dataMap.put("address", "河北省石家庄市桥西区"); - -// String typeName = "车辆登记合同"; - String typeName = "新车买卖合同(现车)"; // 模板名 - String sourcePath = "D:\\anrui\\"; // 模板路径 -// String fileName = "车辆登记合同New.doc"; - String fileName = "新车买.doc"; // 生成的word文件名 - String targetPath = sourcePath; // 生成文件路径 - - - creatWord(dataMap, typeName, sourcePath, targetPath, fileName); // 调用生成word方法 - String wordPath = targetPath + "\\" + fileName; // 新生成的word路径; - String pdfName = typeName + ".pdf"; // 生成pdf的文件名 - doc2pdf(wordPath, targetPath, pdfName); // 调用将word转换为pdf的方法 - - } - - public static class Car { - private String brand; - private String vinNo; - private String remarks; - - public Car(String brand, String vinNo, String remarks) { - this.brand = brand; - this.vinNo = vinNo; - this.remarks = remarks; - } - - public String getBrand() { - return brand; - } - - public void setBrand(String brand) { - this.brand = brand; - } - - public String getVinNo() { - return vinNo; - } - - public void setVinNo(String vinNo) { - this.vinNo = vinNo; - } - public String getRemarks() { - return remarks; - } - - public void setRemarks(String remarks) { - this.remarks = remarks; - } - } - public static void addWatermark(String src, String des, String text) throws Exception { + public static void addWatermark(ActiveXComponent wordApp, Dispatch documents,Dispatch doc,String src, String des, String text) throws Exception { ComThread.InitMTA(); - ActiveXComponent wordApp = new ActiveXComponent("word.Application"); // 文档隐藏时进行应用操作 wordApp.setProperty("Visible", new Variant(false)); // 实例化模板Workbooks对象 - Dispatch documents = wordApp.getProperty("Documents").toDispatch(); //打开文件 - Dispatch doc = Dispatch.call(documents, "Open", src, new Variant(false),new Variant(false)).toDispatch(); Dispatch docSelect = Dispatch.get(wordApp, "Selection").toDispatch(); //取得活动窗体对象 Dispatch activeDoc = wordApp.getProperty("ActiveWindow").toDispatch(); @@ -281,11 +206,20 @@ public class WordUtils { } catch (Exception e) { e.printStackTrace(); } finally { - Dispatch.call(doc, "Close", new Variant(-1),new Variant(1),new Variant(true)); + /* Dispatch.call(doc, "Close", new Variant(-1),new Variant(1),new Variant(true)); if (wordApp != null) { wordApp.invoke("Quit", new Variant[]{}); } - ComThread.Release(); + ComThread.Release();*/ + // 关闭文档 + // Dispatch.call(doc, "Close", false); + // 关闭office + // wordApp.invoke("Quit", 0); + System.out.println("关闭文档"); +// if (app != null) +// app.invoke("Quit", new Variant[]{}); + // 如果没有这句话,winword.exe进程将不会关闭 + // ComThread.Release(); } } /* @@ -343,5 +277,77 @@ public class WordUtils { Dispatch.put(view, "SeekView", new Variant(0)); }*/ + public static void main(String[] args) { + Map dataMap = new HashMap(); + String curDate = DateUtils.dateConvertStr(new Date(), "yyyy年MM月dd日"); + dataMap.put("partyA", "甲方卖出方"); + dataMap.put("partyB", "乙方买受方"); + // 图片 +// dataMap.put("imgStr1", getImageStr("D:\\fileTest\\name.png")); +// dataMap.put("imgStr2", getImageStr("D:\\fileTest\\zhang.png")); + // 列表 + Car car1 = new Car("奔驰", "1001", "v10"); + Car car2 = new Car("宝马", "1002", "v10"); + Car car3 = new Car("奥迪", "1003", "v10"); + List list = new ArrayList<>(); + list.add(car1); + list.add(car2); + list.add(car3); + dataMap.put("carList", list); + + dataMap.put("money", "1"); + dataMap.put("money1", "2"); + dataMap.put("money2", "3"); + dataMap.put("address", "河北省石家庄市桥西区"); + +// String typeName = "车辆登记合同"; + String typeName = "新车买卖合同(现车)"; // 模板名 + String sourcePath = "D:\\anrui\\"; // 模板路径 +// String fileName = "车辆登记合同New.doc"; + String fileName = "新车买.doc"; // 生成的word文件名 + String targetPath = sourcePath; // 生成文件路径 + + + creatWord(dataMap, typeName, sourcePath, targetPath, fileName); // 调用生成word方法 + String wordPath = targetPath + "\\" + fileName; // 新生成的word路径; + String pdfName = typeName + ".pdf"; // 生成pdf的文件名 + doc2pdf(wordPath, targetPath, pdfName); // 调用将word转换为pdf的方法 + } + + public static class Car { + private String brand; + private String vinNo; + private String remarks; + + public Car(String brand, String vinNo, String remarks) { + this.brand = brand; + this.vinNo = vinNo; + this.remarks = remarks; + } + + public String getBrand() { + return brand; + } + + public void setBrand(String brand) { + this.brand = brand; + } + + public String getVinNo() { + return vinNo; + } + + public void setVinNo(String vinNo) { + this.vinNo = vinNo; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + } }