java poi 生成docx插入頁腳

代碼如下

/**
     * 設置頁腳的字體樣式
     *
     * @param r1 段落元素
     */
    private void setXWPFRunStyle(XWPFRun r1,String font,int fontSize) {
        r1.setFontSize(fontSize);
        CTRPr rpr = r1.getCTR().isSetRPr() ? r1.getCTR().getRPr() : r1.getCTR().addNewRPr();
        CTFonts fonts = rpr.isSetRFonts() ? rpr.getRFonts() : rpr.addNewRFonts();
        fonts.setAscii(font);
        fonts.setEastAsia(font);
        fonts.setHAnsi(font);
    }

 注意  doc 爲  XWPFDocument doc = null

完整代碼在  https://blog.csdn.net/z446981439/article/details/103994151 
//生成頁腳
    public void createFooter(){
        /*
         * 生成頁腳段落
         * 給段落設置寬度爲佔滿一行
         * */
        CTSectPr sectPr=doc.getDocument().getBody().addNewSectPr();
        XWPFHeaderFooterPolicy headerFooterPolicy=new XWPFHeaderFooterPolicy(doc,sectPr);
        try {
            XWPFFooter footer=headerFooterPolicy.createFooter(STHdrFtr.DEFAULT);
            XWPFParagraph paragraph = footer.getParagraphArray(0);
            paragraph.setAlignment(ParagraphAlignment.LEFT);
            paragraph.setVerticalAlignment(TextAlignment.CENTER);
            paragraph.setBorderTop(Borders.THICK);
            CTTabStop tabStop = paragraph.getCTP().getPPr().addNewTabs().addNewTab();
            tabStop.setVal(STTabJc.RIGHT);
            int twipsPerInch =  1440;
            tabStop.setPos(BigInteger.valueOf(6 * twipsPerInch));
            /*
             * 給段落創建元素
             * 設置元素字面爲公司地址+公司電話
             * */
            XWPFRun run = paragraph.createRun();
            setXWPFRunStyle(run,"宋體",8);
            run.addTab();
            String s=run.getFontFamily();
            /*
             * 生成頁碼
             * 頁碼右對齊
             * */
            run = paragraph.createRun();
            run.setText("第");
            setXWPFRunStyle(run,"宋體",8);
            run = paragraph.createRun();
            CTFldChar fldChar = run.getCTR().addNewFldChar();
            fldChar.setFldCharType(STFldCharType.Enum.forString("begin"));
            setXWPFRunStyle(run,"宋體",8);
            run = paragraph.createRun();
            CTText ctText = run.getCTR().addNewInstrText();
            ctText.setStringValue("PAGE  \\* MERGEFORMAT");
            ctText.setSpace(SpaceAttribute.Space.Enum.forString("preserve"));
            setXWPFRunStyle(run,"宋體",8);

            fldChar = run.getCTR().addNewFldChar();
            fldChar.setFldCharType(STFldCharType.Enum.forString("end"));

            run = paragraph.createRun();
            run.setText("頁/共");
            setXWPFRunStyle(run,"宋體",8);

            run = paragraph.createRun();
            fldChar = run.getCTR().addNewFldChar();
            fldChar.setFldCharType(STFldCharType.Enum.forString("begin"));

            run = paragraph.createRun();
            ctText = run.getCTR().addNewInstrText();
            ctText.setStringValue("NUMPAGES  \\* MERGEFORMAT ");
            ctText.setSpace(SpaceAttribute.Space.Enum.forString("preserve"));
            setXWPFRunStyle(run,"宋體",8);

            fldChar = run.getCTR().addNewFldChar();
            fldChar.setFldCharType(STFldCharType.Enum.forString("end"));

            run = paragraph.createRun();
            run.setText("頁");
            setXWPFRunStyle(run,"宋體",8);
        } catch (IOException e) {
            throw CommonException.exception("頁腳設置失敗!",e);
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章