使用 Apache poi 从 docx 获取文本样式

der*_*rek 5 java apache ms-word docx apache-poi

我正在尝试从 MS docx 文件中获取样式信息,使用添加的样式(如粗体、斜体)编写文件内容没有问题。字体大小等,但读取文件内容并获取样式信息不太清楚。我尝试过使用 XWPFDocument,这个 API 似乎没有读取样式的能力。我现在正在尝试 XWPFWordExtractor,它看起来更有希望,但我仍然无法获取文本的样式信息。

我阅读的内容类型类似于以下内容。

“您好,这是粗体文本,这是斜体文本abd 这是粗体斜体文本

任何指向示例的指针都会很棒。

der*_*rek 3

好的,根据 Gagravarr 的评论,解决方案如下,正是我想要的。所以基本上加格拉瓦尔回答了这个问题,但我不知道除了说它之外还应该给予他信任。

\n\n
for (XWPFParagraph paragraph : docx.getParagraphs()) {\n                int pos = 0;\n                for (XWPFRun run : paragraph.getRuns()) {\n                    System.out.println("Current run IsBold : " + run.isBold());\n                    System.out.println("Current run IsItalic : " + run.isItalic());\n                    for (char c : run.text().toCharArray()) {\n\n                        System.out.print(c);\n                        pos++;\n                    }\n                    System.out.println();\n                }\n            }\n
Run Code Online (Sandbox Code Playgroud)\n\n

`

\n\n

输出如下

\n\n

\nCurrent run IsBold : false\nCurrent run IsItalic : false\n"Hello, this is\xc2\xa0\nCurrent run IsBold : true\nCurrent run IsItalic : false\nbold text\nCurrent run IsBold : false\nCurrent run IsItalic : false\n\xc2\xa0and this is\xc2\xa0\nCurrent run IsBold : false\nCurrent run IsItalic : true\nitalic text\nCurrent run IsBold : false\nCurrent run IsItalic : false\n\xc2\xa0a\nCurrent run IsBold : false\nCurrent run IsItalic : false\nn\nCurrent run IsBold : false\nCurrent run IsItalic : false\nd this is\xc2\xa0\nCurrent run IsBold : true\nCurrent run IsItalic : true\nbold-italic text\nCurrent run IsBold : false\nCurrent run IsItalic : false\n"

\n