Browse Source

fix: 修复 Apache POI API 兼容性问题

- getSubscript() -> getVerticalAlignment()
- STHighlightColor.Enum.name() -> toString()
何文松 4 weeks ago
parent
commit
d20c14836f

+ 12 - 5
backend/parse-service/src/main/java/com/lingyue/parse/service/WordStructuredExtractionService.java

@@ -422,16 +422,23 @@ public class WordStructuredExtractionService {
                 }
                 
                 // 上下标
-                VerticalAlign vertAlign = xwpfRun.getSubscript();
-                if (vertAlign != null && vertAlign != VerticalAlign.BASELINE) {
-                    run.setVerticalAlign(vertAlign.name().toLowerCase());
+                try {
+                    VerticalAlign vertAlign = xwpfRun.getVerticalAlignment();
+                    if (vertAlign != null && vertAlign != VerticalAlign.BASELINE) {
+                        run.setVerticalAlign(vertAlign.name().toLowerCase());
+                    }
+                } catch (Exception e) {
+                    // 某些版本可能不支持
                 }
                 
                 // 高亮颜色
                 if (xwpfRun.isHighlighted()) {
                     try {
-                        String highlightColor = xwpfRun.getTextHighlightColor().name().toLowerCase();
-                        run.setHighlightColor(highlightColor);
+                        // getTextHighlightColor() 返回 STHighlightColor.Enum,使用 toString()
+                        Object highlightColorEnum = xwpfRun.getTextHighlightColor();
+                        if (highlightColorEnum != null) {
+                            run.setHighlightColor(highlightColorEnum.toString().toLowerCase());
+                        }
                     } catch (Exception e) {
                         run.setHighlightColor("yellow");
                     }

BIN
test/.~test.docx