feat: bookmark replace
This commit is contained in:
parent
2f8a2aafba
commit
4c4349dbb5
@ -1,7 +1,10 @@
|
||||
package com.wmyun.farmwork.word.core;
|
||||
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import com.wmyun.farmwork.word.core.enums.BookmarkType;
|
||||
import com.wmyun.farmwork.word.core.model.BookmarkQueryDataModel;
|
||||
import com.wmyun.farmwork.word.core.model.BookmarkReplaceDataModel;
|
||||
import com.wmyun.farmwork.word.core.model.ext.PictureExData;
|
||||
import org.apache.poi.xwpf.usermodel.*;
|
||||
import org.apache.xmlbeans.impl.common.IOUtil;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark;
|
||||
@ -32,6 +35,7 @@ public class BookmarkQuery {
|
||||
Set<BookmarkQueryDataModel> results = new HashSet<>();
|
||||
List<CTBookmark> bookmarks = new ArrayList<>();
|
||||
try (XWPFDocument doc = new XWPFDocument(in)) {
|
||||
List<XWPFParagraph> allParagraphs = new ArrayList<>(doc.getParagraphs());
|
||||
for (XWPFParagraph paragraph : doc.getParagraphs()) {
|
||||
bookmarks.addAll(paragraph.getCTP().getBookmarkStartList());
|
||||
}
|
||||
@ -41,6 +45,7 @@ public class BookmarkQuery {
|
||||
for (XWPFTableCell cell : row.getTableCells()) {
|
||||
for (XWPFParagraph para : cell.getParagraphs()) {
|
||||
bookmarks.addAll(para.getCTP().getBookmarkStartList());
|
||||
allParagraphs.add(para);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -49,11 +54,13 @@ public class BookmarkQuery {
|
||||
for (XWPFHeader header : doc.getHeaderList()) {
|
||||
for (XWPFParagraph para : header.getParagraphs()) {
|
||||
bookmarks.addAll(para.getCTP().getBookmarkStartList());
|
||||
allParagraphs.add(para);
|
||||
}
|
||||
for (XWPFTable table : header.getTables()) {
|
||||
for (XWPFTableRow row : table.getRows()) {
|
||||
for (XWPFTableCell cell : row.getTableCells()) {
|
||||
for (XWPFParagraph para : cell.getParagraphs()) {
|
||||
allParagraphs.add(para);
|
||||
bookmarks.addAll(para.getCTP().getBookmarkStartList());
|
||||
}
|
||||
}
|
||||
@ -63,18 +70,31 @@ public class BookmarkQuery {
|
||||
|
||||
for (XWPFFooter footer : doc.getFooterList()) {
|
||||
for (XWPFParagraph para : footer.getParagraphs()) {
|
||||
allParagraphs.add(para);
|
||||
bookmarks.addAll(para.getCTP().getBookmarkStartList());
|
||||
}
|
||||
for (XWPFTable table : footer.getTables()) {
|
||||
for (XWPFTableRow row : table.getRows()) {
|
||||
for (XWPFTableCell cell : row.getTableCells()) {
|
||||
for (XWPFParagraph para : cell.getParagraphs()) {
|
||||
allParagraphs.add(para);
|
||||
bookmarks.addAll(para.getCTP().getBookmarkStartList());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (XWPFParagraph paragraph : allParagraphs) {
|
||||
List<XWPFRun> runs = paragraph.getRuns();
|
||||
for (XWPFRun run : runs) {
|
||||
List<XWPFPicture> pictures = run.getEmbeddedPictures();
|
||||
for (XWPFPicture picture : pictures) {
|
||||
String description = picture.getDescription();
|
||||
results.add(new BookmarkQueryDataModel(description, BookmarkType.PICTURE_DESC));
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
@ -16,8 +16,9 @@ public enum BookmarkType {
|
||||
|
||||
TEXT("TEXT"),
|
||||
|
||||
PICTURE("PICTURE");
|
||||
PICTURE("PICTURE"),
|
||||
|
||||
PICTURE_DESC("PICTURE_DESC");
|
||||
|
||||
private final String type;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user