содержимое файла повреждено при добавлении комментария в .docx при помощи apache poi: springboot - PullRequest
0 голосов
/ 28 марта 2019

Я получаю всплывающее окно с содержимым файла при открытии файла с помощью MS Office Word в Windows и Mac OS.Я добавил комментарии к предложениям в абзаце в файле .docx, используя библиотеку apache-poi. Но я не могу открыть загруженный файл.Пожалуйста, помогите мне решить эту проблему.

Я попытался изменить версию apache poi в моем проекте.Также пробовал много других способов.

Ниже приведен код, который я написал для добавления комментария в файл .docx

public MyXWPFCommentsDocument createCommentsDocument(String path, 

XWPFDocument document) throws Exception {
        OPCPackage oPCPackage = document.getPackage();
        PackagePartName partName = PackagingURIHelper.createPartName(path + "/comments.xml");
        PackagePart part;
        if (oPCPackage.containPart(partName)) {
            part = oPCPackage.getPart(partName);
        } else {
            part = oPCPackage.createPart(partName,
                    "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml");
        }
        MyXWPFCommentsDocument myXWPFCommentsDocument = new MyXWPFCommentsDocument(part);

        String rId = "rId" + (document.getRelationParts().size() + 1);
        document.addRelation(rId, XWPFRelation.COMMENT, myXWPFCommentsDocument);
        return myXWPFCommentsDocument;
}


public File updateFile(File file, File xmlfile, CLMDocument clmDoc, String path) throws Exception {

        FileInputStream fis;

        fis = new FileInputStream(file);

        XWPFDocument document = new XWPFDocument(fis);

        MyXWPFCommentsDocument myXWPFCommentsDocument = createCommentsDocument(path, document);

        CTComments comments = myXWPFCommentsDocument.getComments();

        CTComment ctComment;
...

BigInteger cId = BigInteger.ZERO;
                                ctComment = comments.addNewComment();
                                ctComment.setAuthor("Admin");
                                ctComment.setInitials("AR");
                                ctComment.setDate(new GregorianCalendar(Locale.UK));
                                ctComment.addNewCommentRangeStart().setId(cId);
                                ctComment.addNewCommentRangeEnd().setId(BigInteger.TEN);
                                ctComment.setId(cId);
                                ctComment.addNewP().addNewR().addNewT().setStringValue("comment text for the sentence");
                                paragraph.removeRun(k);

                                paragraph.getCTP().addNewCommentRangeStart().setId(cId);
                                XWPFRun run112 = paragraph.insertNewRun(k);
                                paragraph.getCTP().addNewCommentRangeEnd().setId(BigInteger.TEN);
                                run112.getCTR().addNewCommentReference().setId(cId);
                                run112.setText(clmSentence.getsText());
                                run112.addBreak(BreakClear.LEFT);

document.write(new FileOutputStream(file.getAbsolutePath()));
        document.close();
return file;
}

Я ожидаю, что смогу открыть обновленный файл в MSOffice Word на Windows и Mac без получения поврежденной ошибки содержимого.Также сгенерированный файл должен быть загружаемым.

...