diff --git a/src/main/java/com/yem/wm/es/salescontrac/op/SalesOrderAutoSignOp.java b/src/main/java/com/yem/wm/es/salescontrac/op/SalesOrderAutoSignOp.java index 0c810b5e..929890e7 100644 --- a/src/main/java/com/yem/wm/es/salescontrac/op/SalesOrderAutoSignOp.java +++ b/src/main/java/com/yem/wm/es/salescontrac/op/SalesOrderAutoSignOp.java @@ -112,7 +112,7 @@ public class SalesOrderAutoSignOp extends AbstractOperationServicePlugIn { InputStream validatorStream = new ByteArrayInputStream(out.toByteArray()); // 获取书签 - List bookMarks = ContactSignUtils.getFileBookMarks(validatorStream); + List bookMarks = ContactSignUtils.getFileBookMarks(validatorStream, filename); validatorSignAble(bookMarks, BOOKMARK, filename); File file; diff --git a/src/main/java/com/yem/wm/es/salescontrac/validator/SalescontracValidetor.java b/src/main/java/com/yem/wm/es/salescontrac/validator/SalescontracValidetor.java index 9a04e972..2c4a0cb3 100644 --- a/src/main/java/com/yem/wm/es/salescontrac/validator/SalescontracValidetor.java +++ b/src/main/java/com/yem/wm/es/salescontrac/validator/SalescontracValidetor.java @@ -86,7 +86,7 @@ public class SalescontracValidetor extends AbstractValidator { InputStream validatorStream = new ByteArrayInputStream(out.toByteArray()); // 获取书签 - List bookMarks = ContactSignUtils.getFileBookMarks(validatorStream); + List bookMarks = ContactSignUtils.getFileBookMarks(validatorStream, filename); for (CTBookmark bookMark : bookMarks) { String bookMarkName = bookMark.getName(); if (bookMarkName.contains(BOOKMARK)) { diff --git a/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderAutoSignOp.java b/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderAutoSignOp.java index 3d0ce178..3e0dc895 100644 --- a/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderAutoSignOp.java +++ b/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderAutoSignOp.java @@ -116,7 +116,7 @@ public class SalesOrderAutoSignOp extends AbstractOperationServicePlugIn { InputStream validatorStream = new ByteArrayInputStream(out.toByteArray()); // 获取书签 - List bookMarks = ContactSignUtils.getFileBookMarks(validatorStream); + List bookMarks = ContactSignUtils.getFileBookMarks(validatorStream, filename); validatorSignAble(bookMarks, BOOKMARK, filename); File file; diff --git a/src/main/java/com/yem/wm/es/salesorder/validator/SalesOrderSignatureValidetor.java b/src/main/java/com/yem/wm/es/salesorder/validator/SalesOrderSignatureValidetor.java index 8577a9fa..f251e342 100644 --- a/src/main/java/com/yem/wm/es/salesorder/validator/SalesOrderSignatureValidetor.java +++ b/src/main/java/com/yem/wm/es/salesorder/validator/SalesOrderSignatureValidetor.java @@ -83,7 +83,7 @@ public class SalesOrderSignatureValidetor extends AbstractValidator { InputStream validatorStream = new ByteArrayInputStream(out.toByteArray()); // 获取书签 - List bookMarks = ContactSignUtils.getFileBookMarks(validatorStream); + List bookMarks = ContactSignUtils.getFileBookMarks(validatorStream,filename); for (CTBookmark bookMark : bookMarks) { String bookMarkName = bookMark.getName(); if (bookMarkName.contains(BOOKMARK)) { diff --git a/src/main/java/com/yem/wm/utils/ContactSignUtils.java b/src/main/java/com/yem/wm/utils/ContactSignUtils.java index b70adf42..1854564e 100644 --- a/src/main/java/com/yem/wm/utils/ContactSignUtils.java +++ b/src/main/java/com/yem/wm/utils/ContactSignUtils.java @@ -7,6 +7,7 @@ import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.util.Units; import org.apache.poi.xwpf.usermodel.*; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark; @@ -27,15 +28,31 @@ import java.util.*; public class ContactSignUtils { private static final Logger logger = LoggerFactory.getLogger(ContactSignUtils.class); - - public static List getFileBookMarks(InputStream in) { +// + public static List getFileBookMarks(InputStream in, String filename) { List list = new ArrayList<>(); - try (XWPFDocument doc = new XWPFDocument(in)) { - for (XWPFParagraph paragraph : doc.getParagraphs()) { - list.addAll(paragraph.getCTP().getBookmarkStartList()); + int lastIndexOf = filename.lastIndexOf("."); + String extension = ""; + if (lastIndexOf>0) { + extension = filename.substring(lastIndexOf + 1); + } + if ("docx".equals(extension)) { + try (XWPFDocument doc = new XWPFDocument(in)) { + for (XWPFParagraph paragraph : doc.getParagraphs()) { + list.addAll(paragraph.getCTP().getBookmarkStartList()); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + }else if ("doc".equals(extension)){ + try (POIFSFileSystem doc = new POIFSFileSystem(in)){//HWPFDocument + for (int i = 0; i < doc.getBigBlockSize(); i++) { + } + } catch (IOException e) { + throw new RuntimeException(e); } - } catch (IOException e) { - throw new RuntimeException(e); } return list; }