diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 4f81644..6aede7a 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -54,6 +54,13 @@ poi-tl 1.10.0 + + + com.aspose + aspose-words + 0.0.1-SNAPSHOT + + \ No newline at end of file diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 4f81644..6aede7a 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -54,6 +54,13 @@ poi-tl 1.10.0 + + + com.aspose + aspose-words + 0.0.1-SNAPSHOT + + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index ce6f812..667c9e1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -9,6 +9,7 @@ import com.casic.missiles.dto.business.file.CropPicture; import com.casic.missiles.dto.business.file.FilePrintRegister; import com.casic.missiles.service.listeners.util.ParseWord07; +import com.casic.missiles.service.listeners.util.PdfUtils; import com.spire.doc.*; import com.spire.doc.documents.*; import com.spire.doc.fields.DocPicture; @@ -165,11 +166,12 @@ * @param pdfNewUrl 存储新PDF文件路径 */ public static void wordToPdf(String wordNewUrl, String pdfNewUrl) { -// 将新Word文档转换为PDF文件 - Document document = new Document(); - document.loadFromFile(wordNewUrl); - document.saveToFile(pdfNewUrl, FileFormat.PDF); - document.dispose(); + PdfUtils.doc2pdf(wordNewUrl,pdfNewUrl); +//// 将新Word文档转换为PDF文件 +// Document document = new Document(); +// document.loadFromFile(wordNewUrl); +// document.saveToFile(pdfNewUrl, FileFormat.PDF); +// document.dispose(); } /** diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 4f81644..6aede7a 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -54,6 +54,13 @@ poi-tl 1.10.0 + + + com.aspose + aspose-words + 0.0.1-SNAPSHOT + + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index ce6f812..667c9e1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -9,6 +9,7 @@ import com.casic.missiles.dto.business.file.CropPicture; import com.casic.missiles.dto.business.file.FilePrintRegister; import com.casic.missiles.service.listeners.util.ParseWord07; +import com.casic.missiles.service.listeners.util.PdfUtils; import com.spire.doc.*; import com.spire.doc.documents.*; import com.spire.doc.fields.DocPicture; @@ -165,11 +166,12 @@ * @param pdfNewUrl 存储新PDF文件路径 */ public static void wordToPdf(String wordNewUrl, String pdfNewUrl) { -// 将新Word文档转换为PDF文件 - Document document = new Document(); - document.loadFromFile(wordNewUrl); - document.saveToFile(pdfNewUrl, FileFormat.PDF); - document.dispose(); + PdfUtils.doc2pdf(wordNewUrl,pdfNewUrl); +//// 将新Word文档转换为PDF文件 +// Document document = new Document(); +// document.loadFromFile(wordNewUrl); +// document.saveToFile(pdfNewUrl, FileFormat.PDF); +// document.dispose(); } /** diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/ParseWord07.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/ParseWord07.java index 656fa51..faf91dd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/ParseWord07.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/ParseWord07.java @@ -198,6 +198,7 @@ if (CollectionUtil.isNotEmpty(mergeColNames)) { //遍寻列,同时增加下标超值判断 int positionIndex = tryGetInitialMergeRow(table); + //查询合并索引的列 List mergeIndexList = checkThisTableCellMergeIndex(positionIndex, table, mergeColNames); Map mergeIndexMap = mergeIndexList.stream().collect(Collectors.toMap(e -> e, e -> e)); @@ -251,7 +252,7 @@ ); int colIndex = 0; List mergeIndexList = new ArrayList<>(); - for (int i = 0; i < --positionIndex; i++) { + for (int i = 0; i <= positionIndex; i++) { XWPFTableRow row = table.getRow(i); //标题合并行 while (colIndex < row.getTableCells().size()) { @@ -398,12 +399,21 @@ } private void parseThisRow(List cells, Map map) throws Exception { - Iterator var3 = cells.iterator(); - while (var3.hasNext()) { - XWPFTableCell cell = (XWPFTableCell) var3.next(); + int cellIndex = 0; + if (cells != null && cells.get(0).getText().contains("{{") && !cells.get(0).getText().contains("}}")) { + for (; cellIndex < cells.size(); cellIndex++) { + if (cells.get(cellIndex).getText().contains("}}")) { + clearParagraphText((cells.get(cellIndex)).getParagraphs()); + break; + } + clearParagraphText((cells.get(cellIndex)).getParagraphs()); + } + } + //去除{{,继续执行此行的处理 + for (; cellIndex < cells.size(); cellIndex++) { + XWPFTableCell cell = cells.get(cellIndex); this.parseAllParagraph(cell.getParagraphs(), map); } - } private void parseThisTable(XWPFTable table, Map map, List mergeColNames) throws Exception { @@ -478,13 +488,11 @@ this.parseThisParagraph((XWPFParagraph) xwpfHeader.getListParagraph().get(i), map); } } - List footerList = doc.getFooterList(); Iterator var9 = footerList.iterator(); while (var9.hasNext()) { XWPFFooter xwpfFooter = (XWPFFooter) var9.next(); - for (int i = 0; i < xwpfFooter.getListParagraph().size(); ++i) { this.parseThisParagraph((XWPFParagraph) xwpfFooter.getListParagraph().get(i), map); } @@ -527,8 +535,14 @@ List> resultMap = (List>) result; List resultList = resultMap.stream().map(m -> m.get(paramKeys[paramKeys.length - 1])).collect(Collectors.toList()); return maxExpansionLength > resultList.size() ? maxExpansionLength : cellIndex + 1 + resultList.size(); + } else if (result instanceof String) { + if (StringUtils.isEmpty((String) result)) { + clearParagraphText((cells.get(cellIndex)).getParagraphs()); + } } } return maxExpansionLength; } + + } diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 4f81644..6aede7a 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -54,6 +54,13 @@ poi-tl 1.10.0 + + + com.aspose + aspose-words + 0.0.1-SNAPSHOT + + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index ce6f812..667c9e1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -9,6 +9,7 @@ import com.casic.missiles.dto.business.file.CropPicture; import com.casic.missiles.dto.business.file.FilePrintRegister; import com.casic.missiles.service.listeners.util.ParseWord07; +import com.casic.missiles.service.listeners.util.PdfUtils; import com.spire.doc.*; import com.spire.doc.documents.*; import com.spire.doc.fields.DocPicture; @@ -165,11 +166,12 @@ * @param pdfNewUrl 存储新PDF文件路径 */ public static void wordToPdf(String wordNewUrl, String pdfNewUrl) { -// 将新Word文档转换为PDF文件 - Document document = new Document(); - document.loadFromFile(wordNewUrl); - document.saveToFile(pdfNewUrl, FileFormat.PDF); - document.dispose(); + PdfUtils.doc2pdf(wordNewUrl,pdfNewUrl); +//// 将新Word文档转换为PDF文件 +// Document document = new Document(); +// document.loadFromFile(wordNewUrl); +// document.saveToFile(pdfNewUrl, FileFormat.PDF); +// document.dispose(); } /** diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/ParseWord07.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/ParseWord07.java index 656fa51..faf91dd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/ParseWord07.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/ParseWord07.java @@ -198,6 +198,7 @@ if (CollectionUtil.isNotEmpty(mergeColNames)) { //遍寻列,同时增加下标超值判断 int positionIndex = tryGetInitialMergeRow(table); + //查询合并索引的列 List mergeIndexList = checkThisTableCellMergeIndex(positionIndex, table, mergeColNames); Map mergeIndexMap = mergeIndexList.stream().collect(Collectors.toMap(e -> e, e -> e)); @@ -251,7 +252,7 @@ ); int colIndex = 0; List mergeIndexList = new ArrayList<>(); - for (int i = 0; i < --positionIndex; i++) { + for (int i = 0; i <= positionIndex; i++) { XWPFTableRow row = table.getRow(i); //标题合并行 while (colIndex < row.getTableCells().size()) { @@ -398,12 +399,21 @@ } private void parseThisRow(List cells, Map map) throws Exception { - Iterator var3 = cells.iterator(); - while (var3.hasNext()) { - XWPFTableCell cell = (XWPFTableCell) var3.next(); + int cellIndex = 0; + if (cells != null && cells.get(0).getText().contains("{{") && !cells.get(0).getText().contains("}}")) { + for (; cellIndex < cells.size(); cellIndex++) { + if (cells.get(cellIndex).getText().contains("}}")) { + clearParagraphText((cells.get(cellIndex)).getParagraphs()); + break; + } + clearParagraphText((cells.get(cellIndex)).getParagraphs()); + } + } + //去除{{,继续执行此行的处理 + for (; cellIndex < cells.size(); cellIndex++) { + XWPFTableCell cell = cells.get(cellIndex); this.parseAllParagraph(cell.getParagraphs(), map); } - } private void parseThisTable(XWPFTable table, Map map, List mergeColNames) throws Exception { @@ -478,13 +488,11 @@ this.parseThisParagraph((XWPFParagraph) xwpfHeader.getListParagraph().get(i), map); } } - List footerList = doc.getFooterList(); Iterator var9 = footerList.iterator(); while (var9.hasNext()) { XWPFFooter xwpfFooter = (XWPFFooter) var9.next(); - for (int i = 0; i < xwpfFooter.getListParagraph().size(); ++i) { this.parseThisParagraph((XWPFParagraph) xwpfFooter.getListParagraph().get(i), map); } @@ -527,8 +535,14 @@ List> resultMap = (List>) result; List resultList = resultMap.stream().map(m -> m.get(paramKeys[paramKeys.length - 1])).collect(Collectors.toList()); return maxExpansionLength > resultList.size() ? maxExpansionLength : cellIndex + 1 + resultList.size(); + } else if (result instanceof String) { + if (StringUtils.isEmpty((String) result)) { + clearParagraphText((cells.get(cellIndex)).getParagraphs()); + } } } return maxExpansionLength; } + + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/PdfUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/PdfUtils.java new file mode 100644 index 0000000..b9b4054 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/util/PdfUtils.java @@ -0,0 +1,59 @@ +package com.casic.missiles.service.listeners.util; + + +import com.aspose.words.Document; +import com.aspose.words.License; +import com.aspose.words.SaveFormat; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; + +public class PdfUtils { + + + /*** doc转pdf + * + * @paramwordPath + * @parampdfPath + */ + public static void doc2pdf(String wordPath, String pdfPath) { + // 凭证 + String licenseStr = + "\n" + + " \n" + + " \n" + + " Aspose.Total for Java\n" + + " Aspose.Words for Java\n" + + " \n" + + " Enterprise\n" + + " 20991231\n" + + " 20991231\n" + + " 8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7\n" + + " \n" + + " sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=\n" + + ""; + try { + InputStream license = new ByteArrayInputStream(licenseStr.getBytes("UTF-8")); + License aposeLic = new License(); + aposeLic.setLicense(license); + long old = System.currentTimeMillis(); + //新建一个pdf文档 + File file = new File(pdfPath); + FileOutputStream os = new FileOutputStream(file); + //Address是将要被转化的word文档 + Document doc = new Document(wordPath); + //全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换 + doc.save(os, SaveFormat.PDF); + long now = System.currentTimeMillis(); + os.close(); + //转化用时 + System.out.println("Word 转 Pdf 共耗时:" + ((now - old) / 1000.0) + "秒"); + } catch (Exception e) { + System.out.println("Word 转 Pdf 失败..."); + e.printStackTrace(); + } + } +} +