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