Удалить абзац из нижнего колонтитула в документе Word - PullRequest
0 голосов
/ 01 ноября 2019

Я создал нижний колонтитул в документе, который включает в себя таблицу с одной строкой и тремя столбцами, но под таблицей есть пустой абзац, который делает нижний колонтитул больше, чем я хочу. Я читал кого-то, кто сказал, чтобы установить поля документа, но я уже делаю это, и все они работают отдельно от нижнего поля.

Это метод

 static public void footer(XWPFDocument doc) {

    CTSectPr sectPr = doc.getDocument().getBody().getSectPr() == null ? doc.getDocument().getBody().addNewSectPr() : doc.getDocument().getBody().getSectPr();
    XWPFHeaderFooterPolicy footerPolicy= new XWPFHeaderFooterPolicy(doc, sectPr);

    XWPFFooter footer = footerPolicy.createFooter(XWPFHeaderFooterPolicy.DEFAULT);

    // create table in footer
    XWPFParagraph paragraph = footer.createParagraph();

    XmlCursor cursor = paragraph.getCTP().newCursor();
    XWPFTable table = footer.insertNewTbl(cursor);
    XWPFTableRow row = (table.getRow(0) == null)? table.createRow() : table.getRow(0);

    int twips = 1440;

    for (int i = 0; i < 3; i++) {
        XWPFTableCell cell = row.getCell(i);
        if (cell == null) cell = row.createCell();
        CTTblWidth tblWidth = cell.getCTTc().addNewTcPr().addNewTcW();
        tblWidth.setW(BigInteger.valueOf(((i == 1) ? 3 : 2) * twips));
        tblWidth.setType(STTblWidth.DXA);
        paragraph = cell.getParagraphs().get(0);
        XWPFRun run = paragraph.createRun();
        if (i == 0) {
            paragraph.setAlignment(ParagraphAlignment.LEFT);
            run.setText("blah blah blah");
        } else if (i == 1) {
            paragraph.setAlignment(ParagraphAlignment.CENTER);
            paragraph.getCTP().addNewFldSimple().setInstr("PAGE \\* MERGEFORMAT");
        } else if (i == 2) {
            paragraph.setAlignment(ParagraphAlignment.RIGHT);
            run.setText("blah blah blah");
        }
    }
}

I 'Я получаю следующий колонтитул. Я набрал «Пустую строку» и добавил границы таблицы, так что, думаю, яснее, в чем моя проблема.

enter image description here

1 Ответ

1 голос
/ 01 ноября 2019

Под таблицей всегда должен быть абзац. Этот пункт не может быть удален. Попробуйте удалить его в Word s GUI. Это будет невозможно.

Поэтому все, что вы можете сделать, - это уменьшить высоту абзаца, установив очень низкий размер шрифта по умолчанию (минимум 1pt) и установив интервал после этого абзаца равным 0.

...
XWPFParagraph paragraph = footer.createParagraph();
paragraph.getCTP().addNewPPr().addNewRPr().addNewSz().setVal(BigInteger.valueOf(2)); // default font size 2 half pt = 1pt
paragraph.setSpacingAfter(0);
...
...