2016-11-15 28 views
1

私の単語のドキュメントに足跡を追加したいのですが、私の方法では最後のページにのみフッターテキストが追加されているという問題があります。おかげで、 が、これは私の方法フッターを追加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 bodyaddWordFooter()から削除します。

そして、あなたの機能

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

それはあなたの全体の.docxにフッターを適用するには、この行を追加します。

あなたの問題とは反対に、最後のページにのみフッターを追加しようとしていますが、特定のCTBody bodyを渡すことで問題を再現できます。

関連する問題