2016-11-15 8 views
1

Я хочу добавить нижний колонтитул в свое слово документ, созданный библиотекой apache poi, проблема в том, что мой метод всегда добавляет текст нижнего колонтитула только на последней странице, m i что-то не хватает? Спасибо, это сильфонные мой методДобавить нижний колонтитул Word apache poi java

private void addWordFooter(XWPFDocument document, CTBody body, String clientDate, 
     String graphName, long TabWidth) throws IOException, InvalidFormatException { 

    CTSectPr sectPr = body.getSectPr(); 
    if(sectPr==null) 
    { 
     sectPr = body.addNewSectPr(); 
    } 


    CTP footerCtp = CTP.Factory.newInstance(); 
    CTR footerCtr = footerCtp.addNewR(); 
    XWPFParagraph footerCopyrightParagraph = new XWPFParagraph(footerCtp, document); 
    document.getProperties().getExtendedProperties().getUnderlyingProperties().getPages(); 
    XWPFRun run = footerCopyrightParagraph.getRun(footerCtr); 
    run.setText(graphName); 
    run.addTab(); 
    run.setText(clientDate); 
    setTabStop(footerCtp, STTabJc.Enum.forString("right"), BigInteger.valueOf(TabWidth)); 

    XWPFParagraph[] footerParagraphs = { footerCopyrightParagraph }; 

    XWPFHeaderFooterPolicy headerFooterPolicy = new XWPFHeaderFooterPolicy(document, sectPr); 
    headerFooterPolicy.createFooter(STHdrFtr.DEFAULT, footerParagraphs); 
} 

Метод setTabStop:

private void setTabStop(CTP oCTP, STTabJc.Enum oSTTabJc, BigInteger oPos) { 
    CTPPr oPPr = oCTP.getPPr(); 
    if (oPPr == null) { 
     oPPr = oCTP.addNewPPr(); 
    } 

    CTTabs oTabs = oPPr.getTabs(); 
    if (oTabs == null) { 
     oTabs = oPPr.addNewTabs(); 
    } 

    CTTabStop oTabStop = oTabs.addNewTab(); 
    oTabStop.setVal(oSTTabJc); 
    oTabStop.setPos(oPos); 
} 

ответ

0

После некоторого тестирования я думаю, что вы вызываете эту функцию только на последнем корпусе.

Удалить этот аргумент CTBody body от addWordFooter().

И добавьте эту строку в функцию

CTSectPr sectPr = d.getDocument().getBody().addNewSectPr(); 

Он будет применять колонтитул ко всей .docx.

Вопреки вашей проблеме, я пытаюсь добавить нижний колонтитул только на последнюю страницу, и, передав конкретный CTBody body, я мог бы реплицировать вашу проблему.