2016-11-15 4 views
1

Ich möchte Fußzeile zu meinem Word-Dokument von Apache Poi-Bibliothek generiert, das Problem, dass meine Methode immer die Fußzeile Text nur auf der letzten Seite hinzufügen, m ich etwas fehlt? Danke, diese unten meine MethodeFußzeile hinzufügen 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); 
} 

Die setTabStop Methode:

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); 
} 

Antwort

0

Nach einigen Tests Ich denke, diese Funktion nur am letzten Körper fordern.

Entfernen Sie dieses Argument CTBody body von addWordFooter().

und fügen Sie diese Zeile in Ihre Funktion

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

Es wird Fußzeile auf Ihre gesamte .docx anzuwenden.

Im Gegensatz zu Ihrem Problem, ich versuche Fußzeile nur auf der letzten Seite hinzuzufügen, und durch eine bestimmte CTBody body übergeben konnte ich Ihr Problem replizieren.