因為從word一開始都是動態產生
所以處理方式比較迂迴
使用方式為:
- 產生xml doc檔案
- 轉成標準docx檔案
- 使用POI產生目錄
代碼如下,參考網址
private void generateTOC(XWPFDocument document) {
String findText = "#p3";
String replaceText = "";
for (XWPFParagraph p : document.getParagraphs()) {
for (XWPFRun r : p.getRuns()) {
int pos = r.getTextPosition();
String text = r.getText(pos);
if (text != null && text.contains(findText)) {
text = text.replace(findText, replaceText);
r.setText(text, 0);
addField(p, "TOC \\o \"1-3\" \\h \\z \\u");
break;
}
}
}
}
private void addField(XWPFParagraph paragraph, String fieldName) {
CTSimpleField ctSimpleField = paragraph.getCTP().addNewFldSimple();
ctSimpleField.setInstr(fieldName);
ctSimpleField.setDirty(STOnOff.TRUE);
ctSimpleField.addNewR().addNewT().setStringValue("<<fieldName>>");
}
沒有留言:
張貼留言