当前位置: 首页 > 知识库问答 >
问题:

提取word文档注释和它们注释的文本

关玮
2023-03-14

我需要提取word文档评论和他们评论的文本。下面是我当前的解决方案,但它无法正常工作

public class Main {

    public static void main(String[] args) throws Exception {
        var document = new Document("sample.docx");
        NodeCollection<Paragraph> paragraphs = document.getChildNodes(PARAGRAPH, true);
        List<MyComment> myComments = new ArrayList<>();

        for (Paragraph paragraph : paragraphs) {
            var comments = getComments(paragraph);
            int commentIndex = 0;

            if (comments.isEmpty()) continue;

            for (Run run : paragraph.getRuns()) {
                var runText = run.getText();

                for (int i = commentIndex; i < comments.size(); i++) {
                    Comment comment = comments.get(i);
                    String commentText = comment.getText();

                    if (paragraph.getText().contains(runText + commentText)) {
                        myComments.add(new MyComment(runText, commentText));
                        commentIndex++;
                        break;
                    }
                }
            }
        }

        myComments.forEach(System.out::println);
    }

    private static List<Comment> getComments(Paragraph paragraph) {
        @SuppressWarnings("unchecked")
        NodeCollection<Comment> comments = paragraph.getChildNodes(COMMENT, false);
        List<Comment> commentList = new ArrayList<>();

        comments.forEach(commentList::add);

        return commentList;
    }

    static class MyComment {
        String text;
        String commentText;

        public MyComment(String text, String commentText) {
            this.text = text;
            this.commentText = commentText;
        }

        @Override
        public String toString() {
            return text + "-->" + commentText;
        }
    }
}

输出为(不正确):

factors-->This is word comment
%–10% of cancers are caused by inherited genetic defects from a person's parents.-->Second paragraph comment

预期产出为:

factors-->This is word comment=
These factors act, at least partly, by changing the genes of a cell. Typically, many genetic changes are required before cancer develops. Approximately 5%–10% of cancers are caused by inherited genetic defects from a person's parents.-->Second paragraph comment
These factors act, at least partly, by changing the genes of a cell. Typically, many genetic changes are required before cancer develops. Approximately 5%–10% of cancers are caused by inherited genetic defects from a person's parents.-->First paragraph comment

请帮我一个更好的方法来显示word文档评论和他们评论的文本。如果你需要额外的细节让我知道我会提供所有所需的细节

共有1个答案

司马宏茂
2023-03-14

注释文本由特殊节点CommentRangeStart和CommentRangeEnd标记。CommentRangeStart和CommentRangeEnd节点的Id与该范围链接到的注释Id相对应。因此,需要在相应的开始节点和结束节点之间提取内容。顺便说一下,Aspose中的代码示例。Word API reference显示如何使用文档访问者打印所有注释的内容及其注释范围。看起来正是你要找的。

 类似资料:
  • 主要内容:Javadoc标签,Javadoc命令,DOS命令生成API帮助文档 ,MyEclipse生成API帮助文档,文档注释的格式Java 支持 3 种注释,分别是单行注释、多行注释和文档注释。文档注释以 开头,并以 结束,可以通过 Javadoc 生成 API 帮助文档,Java 帮助文档主要用来说明类、成员变量和方法的功能。 文档注释只放在类、接口、成员变量、方法之前,因为 Javadoc 只处理这些地方的文档注释,而忽略其它地方的文档注释。 Javadoc 是 Sun 公司提供的一种工

  • 我一直在寻找一个解决这个问题的几个星期,我有一些文件(约95)我正试图使用Gate分类。我已经将它们放在一个名为training_corpus的语料库中,但是,在ANNIE注释了语料库之后,我必须返回到每个文件中,选择文档中的所有标记,并创建一个名为manite的注释,使用feature type和value to the class for document。例如: 键入开始结束id功能 提及0

  • 我需要在现有的pdf上添加一些文本注释。我设法创建了注释并显示它们。唯一的问题是,当在Adobe Reader中打开pdf文档时,注释的内容(如果已最大化)会显示在页面的右侧。 可以将展开标注的坐标设置为与图标相同?(我在用itext 5操作pdf) 提前谢谢

  • 本文向大家介绍Oracle 获取表注释和列注释,包括了Oracle 获取表注释和列注释的使用技巧和注意事项,需要的朋友参考一下 全部表 表的注释 列的注释 相应的还有dba_col_comments,all_col_comments,这两个比user_col_comments多了ower列 以上所述是小编给大家介绍的Oracle 获取表注释和列注释,希望对大家有所帮助,如果大家有任何疑问请给我留言

  • 和和注释之间有什么区别? 我们应该在什么时候使用它们每一个?

  • 问题内容: 我们有一个非常复杂的打印工作流程,其中控件使用Adobe Reader或Adobe Acrobat为生成的PDF文档的草稿版本添加注释和注释。作为工作流的一部分,应解析导入的带有批注和注释的PDF文档,并将批注导入CMS系统(连同PDF)。 问:是否有可靠的工具(首选Python或Java)以干净可靠的方式将此类数据提取到PDF文件? 问题答案: 此代码应该可以完成工作。从pdf解析注