如何在 java 中使用 docx4j 获得斜体样式?

How to get italic style using docx4j in java?

我想使用 docx4j api 在 word 文件数据上应用斜体样式。但是我不明白,任何人都可以帮助我。

rPr.getI() 和 rPr.getICs() 不适合它...

下面是我输入的 docx 文件文本....

参考资料
Curry, R. A. 和 Tempkin, B. B. (2010)。 超声检查:正常结构和功能解剖学简介(第 3 版)。圣路易斯:桑德斯。
Frank, E., & Long, B. (2011)。 Merrill 的定位和射线照相程序图谱(第 12 版)。圣路易斯:莫斯比。

在这个文件中我有 Maintitle 包含斜体样式的字符样式,斜体不直接应用....

try {
        File docxFile = new File("/Users/gwmc-062/Desktop/temp/test.docx");
        WordprocessingMLPackage wProcessorPackage = WordprocessingMLPackage.load(docxFile);
        MainDocumentPart documentPart = wProcessorPackage.getMainDocumentPart();

        Document wmlDocumentEl = (Document) documentPart.getJaxbElement();
        Body body = wmlDocumentEl.getBody();

        List<Object> paraList = TraversalUtil.getChildrenImpl(body);
        for (Object paraObj : paraList) {
            String paraStyle = null;
            boolean paraStyleFlag = false;
            if (paraObj.getClass().getName().equalsIgnoreCase("org.docx4j.wml.P")) {
                String paraText = XmlUtils.unwrap(paraObj).toString();
                PPr pPr = ((P) XmlUtils.unwrap(paraObj)).getPPr();
                if (pPr != null && pPr.getPStyle() != null) {
                    paraStyle = pPr.getPStyle().getVal();
                    paraStyleFlag = true;
                }
                List<Object> paraWRList = TraversalUtil.getChildrenImpl(paraObj);
                for (Object paraWR : paraWRList) {
                    String charStyle = "";
                    boolean charStyleFlag = false, isItalic = false, isBold = false;
                    if (paraWR.getClass().getName().equalsIgnoreCase("org.docx4j.wml.R")) {
                        RPr rPr = ((R) XmlUtils.unwrap(paraWR)).getRPr();
                        if (rPr != null && rPr.getRStyle() != null) {
                            charStyle = rPr.getRStyle().getVal();

                            if (charStyle.toLowerCase().contains("italic"))
                                isItalic = true;
                        }
                        if(rPr != null && (rPr.getI() != null || rPr.getICs() != null)){
                            isItalic = true;
                        }
                        if(rPr != null && (rPr.getB() != null || rPr.getBCs() != null)){
                            isBold = true;
                        }
                        List<Object> textList = TraversalUtil.getChildrenImpl(paraWR);
                        for (Object tObj : textList) {
                            Object textObject = XmlUtils.unwrap(tObj);
                            String className = textObject.getClass().getName();
                            if (className.equalsIgnoreCase("org.docx4j.wml.Text")) {
                                String textContent = ((Text) textObject).getValue();
                            }
                        }
                    }
                }//END paraWR LOOP...
            }
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
The actual solution is:-

Style tStyle = (Style)rPr.getParent();
if( tStyle.getRPr().getI().isVal()){
   isItalic = true;
}