Insert a line break inside a paragraph in XWPFDocument Insert a line break inside a paragraph in XWPFDocument apache apache

Insert a line break inside a paragraph in XWPFDocument


I have another solution and it is easier:

            if (data.contains("\n")) {                String[] lines = data.split("\n");                run.setText(lines[0], 0); // set first line into XWPFRun                for(int i=1;i<lines.length;i++){                    // add break and insert new text                    run.addBreak();                    run.setText(lines[i]);                }            } else {                run.setText(data, 0);            }


After all, I had to create paragraphs manually. Basically, I split the replace string to an array and create a new paragraph for each array element. Here is the code:

protected void replaceElementInParagraphs(List<XWPFParagraph> xwpfParagraphs,                                              Map<String, String> replacedMap) {        if (!searchInParagraphs(xwpfParagraphs, replacedMap)) {            replaceElementInParagraphs(xwpfParagraphs, replacedMap);        }    } private boolean searchInParagraphs(List<XWPFParagraph> xwpfParagraphs, Map<String, String> replacedMap) {        for(XWPFParagraph xwpfParagraph : xwpfParagraphs) {            List<XWPFRun> xwpfRuns = xwpfParagraph.getRuns();            for(XWPFRun xwpfRun : xwpfRuns) {                String xwpfRunText = xwpfRun.getText(xwpfRun.getTextPosition());                for(Map.Entry<String, String> entry : replacedMap.entrySet()) {                    if (xwpfRunText != null && xwpfRunText.contains(entry.getKey())) {                        if (entry.getValue().contains("\n")) {                            String[] paragraphs = entry.getValue().split("\n");                            entry.setValue("");                            createParagraphs(xwpfParagraph, paragraphs);                            return false;                        }                        xwpfRunText = xwpfRunText.replaceAll(entry.getKey(), entry.getValue());                    }                }                xwpfRun.setText(xwpfRunText, 0);            }        }        return true;    } private void createParagraphs(XWPFParagraph xwpfParagraph, String[] paragraphs) {        if(xwpfParagraph!=null){            for (int i = 0; i < paragraphs.length; i++) {                XmlCursor cursor = xwpfParagraph.getCTP().newCursor();                XWPFParagraph newParagraph = document.insertNewParagraph(cursor);                newParagraph.setAlignment(xwpfParagraph.getAlignment());                newParagraph.getCTP().insertNewR(0).insertNewT(0).setStringValue(paragraphs[i]);                newParagraph.setNumID(xwpfParagraph.getNumID());            }            document.removeBodyElement(document.getPosOfParagraph(xwpfParagraph));        }    }