如何将Document由.doc转换为.docx

Document document = new Document(new ByteArrayInputStream(bytes));

document后缀名为.doc,怎么将这个document转换为.docx。
不能使用document.save(“…docx”)的方式。

@ouchli 您只需将文档另存为 DOCX 即可。 例如:

Document document = new Document(new ByteArrayInputStream(bytes));
ByteArrayOutputStream docxStream = new ByteArrayOutputStream();
document.save(docxStream, SaveFormat.DOCX);

我的输入文档为:‘xxxx.doc’,在进行添加批注操作时,报错:
java.lang.IllegalArgumentException: The reference node is not a child of this node.
当文档为:‘xxxx.docx’, 就不会报错了。
用您的代码之后再进行添加批注,还是会报错呢,请问是什么原因

@ouchli 请提供有问题的文件,如果可能的话,请提供代码来重现问题。

Document document = new Document("D:\\Users\\00306664\\Desktop\\jjj.doc");
        document.save(new ByteArrayOutputStream(), SaveFormat.DOCX);
        NodeCollection<Paragraph> childNodes = document.getChildNodes(NodeType.PARAGRAPH, true);
        for (Paragraph para : childNodes) {
            if (para.toString(SaveFormat.TEXT).trim().contains("表4-22c")) {
                String text = para.getText();
                int length = para.getRuns().toArray().length;
                Run cmtAnchorRun = para.getRuns().get(length - 1);
                Run run = para.getRuns().get(WxcmConst.NUM_0);
                Comment comment = new Comment(document, "paragraphDto.getAuth()", "", new Date());
                comment.setText("paragraphDto.getCommentText()");
                para.appendChild(comment);
                CommentRangeStart commentRangeStart = new CommentRangeStart(document, comment.getId());
                para.insertBefore(commentRangeStart, cmtAnchorRun);
                para.insertAfter(new CommentRangeEnd(document, comment.getId()), run);
            }
        }
        System.out.println("b");

@ouchli 不幸的是,如果没有您的原始文档,将很难重现问题。这个代码在我这边没有错误。