POI word 设置页脚 页码 字体字号

 public static void createDefaultFooter(final XWPFDocument document,String fontName,int fontSize) throws IOException, XmlException {
            CTP pageNo = CTP.Factory.newInstance();
            XWPFParagraph footer = new XWPFParagraph(pageNo, document);
            footer.createRun().setFontSize(2000);
            CTPPr begin = pageNo.addNewPPr();
            begin.addNewPStyle().setVal("style21");
            begin.addNewJc().setVal(STJc.CENTER);    
            CTR  pageBegin=pageNo.addNewR();
            pageBegin.addNewRPr().addNewRFonts().setAscii(fontName);
            pageBegin.addNewRPr().addNewRFonts().setCs(fontName);
            pageBegin.addNewRPr().addNewRFonts().setEastAsia(fontName);
            pageBegin.addNewRPr().addNewRFonts().setHAnsi(fontName);
            pageBegin.addNewRPr().addNewSz().setVal(BigInteger.valueOf(fontSize));
            pageBegin.addNewRPr().addNewSzCs().setVal(BigInteger.valueOf(fontSize));
            pageBegin.addNewFldChar().setFldCharType(STFldCharType.BEGIN);
            CTR  page=pageNo.addNewR();
            page.addNewRPr().addNewRFonts().setAscii(fontName);
            page.addNewRPr().addNewRFonts().setCs(fontName);
            page.addNewRPr().addNewRFonts().setEastAsia(fontName);
            page.addNewRPr().addNewRFonts().setHAnsi(fontName);
            page.addNewRPr().addNewSz().setVal(BigInteger.valueOf(fontSize));
            page.addNewRPr().addNewSzCs().setVal(BigInteger.valueOf(fontSize));
            page.addNewInstrText().setStringValue("PAGE   \\* MERGEFORMAT");
            CTR  pageSep=pageNo.addNewR();
            pageSep.addNewRPr().addNewRFonts().setAscii(fontName);
            pageSep.addNewRPr().addNewRFonts().setCs(fontName);
            pageSep.addNewRPr().addNewRFonts().setEastAsia(fontName);
            pageSep.addNewRPr().addNewRFonts().setHAnsi(fontName);
            pageSep.addNewRPr().addNewSz().setVal(BigInteger.valueOf(fontSize));
            pageSep.addNewRPr().addNewSzCs().setVal(BigInteger.valueOf(fontSize));
            pageSep.addNewFldChar().setFldCharType(STFldCharType.SEPARATE);
            CTR end = pageNo.addNewR();
            CTRPr endRPr = end.addNewRPr();
            endRPr.addNewNoProof();
            endRPr.addNewLang().setVal("zh-CN");
            end.addNewRPr().addNewRFonts().setAscii(fontName);
            end.addNewRPr().addNewRFonts().setCs(fontName);
            end.addNewRPr().addNewRFonts().setEastAsia(fontName);
            end.addNewRPr().addNewRFonts().setHAnsi(fontName);
            end.addNewRPr().addNewSz().setVal(BigInteger.valueOf(fontSize));
            end.addNewRPr().addNewSzCs().setVal(BigInteger.valueOf(fontSize));
            end.addNewFldChar().setFldCharType(STFldCharType.END);
            
            CTSectPr sectPr = document.getDocument().getBody().isSetSectPr() ? document.getDocument().getBody().getSectPr() : document.getDocument().getBody().addNewSectPr();
            XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(document, sectPr);
            policy.createFooter(STHdrFtr.DEFAULT, new XWPFParagraph[] { footer });
        }

POI是一个用于读取和写入Microsoft Office文件的Java库,包括Word、Excel和PowerPoint等文件格式。在POI库中,可以使用XWPFDocument类来读取和修改Word文档。 要获取CTBookmark在Word文档中的页码,可以按照以下步骤进行操作: 1. 首先,创建一个XWPFDocument对象,并使用其构造方法加载Word文档文件。 2. 使用XWPFDocument的getDocument方法获取Document对象。 3. 通过Document对象的getBody方法获取文档的主体部分。 4. 遍历主体部分的所有段落,可以使用getParagraphs方法获取段落列表。 5. 对于每个段落,可以使用getCTP方法获取其对应的CTP对象,CTP是POI库中代表Word段落的类。 6. 在CTP对象中,可以通过getBookmarkStartArray、getBookmarkEndArray和getBookmarkIdArray方法获取该段落中的CTBookmark对象的数组、标识号数组和结束标记数组。 7. 遍历CTBookmark数组,获取每个CTBookmark对象的标识号。 8. 通过CTBookmark对象的getCTMarkupRange方法,获取跟该CTBookmark对象相关联的CTMarkupRange对象,CTMarkupRange对象包含了页码等信息。 9. 在CTMarkupRange对象中,可以通过getDomNode方法获取对应的DOM节点。 10. 解析DOM节点,从中获取页码等信息。 需要注意的是,CTBookmark是Word文档中书签的表示,而CTMarkupRange则包含了页码等信息。因此,可以通过CTBookmark对象获取到跟其相关联的CTMarkupRange对象,然后从中获取所需的页码信息。 以上就是关于使用POI库获取CTBookmark页码的简要步骤说明,具体实现时可根据需要进行相应的调整和扩展。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值