如果想实现不同页面大小不同,则需要插入分节符,如图:
代码中在想换页的段落上设置SectPr就可以了,例子如下:
@Test public void testDocx4jSetPageSize() throws Exception { WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage(); MainDocumentPart mdp = wordMLPackage.getMainDocumentPart(); String titleStr="静夜思 李白"; String str="床前明月光,疑似地上霜。"; String str2="举头望明月,低头思故乡。"; P p = Docx4j_Helper.factory.createP(); String rprStr = "<w:rPr xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"><w:rFonts w:hint=\"eastAsia\" w:ascii=\"Times New Roman\" w:hAnsi=\"Times New Roman\" w:eastAsia=\"宋体\"/><w:b/><w:color w:val=\"333333\"/><w:sz w:val=\"32\"/><w:szCs w:val=\"32\"/></w:rPr>"; RPr rpr = (RPr) XmlUtils.unmarshalString(rprStr); setParagraphContent(p, rpr,titleStr); mdp.addObject(p); p = Docx4j_Helper.factory.createP(); setParagraphContent(p, rpr,str); mdp.addObject(p); p = Docx4j_Helper.factory.createP(); PPr pPr=Docx4j_Helper.factory.createPPr(); //设置文字方向 SectPr sectPr = Docx4j_Helper.factory.createSectPr(); TextDirection textDirect = Docx4j_Helper.factory.createTextDirection(); //文字方向:垂直方向从右往左 textDirect.setVal("tbRl"); sectPr.setTextDirection(textDirect); Type sectType = Docx4j_Helper.factory.createSectPrType(); //下一页 sectType.setVal("nextPage"); sectPr.setType(sectType); //设置页面大小 PgSz pgSz = Docx4j_Helper.factory.createSectPrPgSz(); pgSz.setW(new BigInteger("8335")); pgSz.setH(new BigInteger("11850")); sectPr.setPgSz(pgSz); pPr.setSectPr(sectPr); p.setPPr(pPr); setParagraphContent(p, rpr,str2); mdp.addObject(p); p = createParagraphWithHAlign(); setParagraphContent(p, rpr,titleStr); mdp.addObject(p); p = createParagraphWithHAlign(); setParagraphContent(p, rpr,str); mdp.addObject(p); p = createParagraphWithHAlign(); setParagraphContent(p, rpr,str2); mdp.addObject(p); Docx4j_Helper.saveWordPackage(wordMLPackage, outputfilepath); } /** * 创建段落设置水平对齐方式 * @return */ private P createParagraphWithHAlign() { P p; PPr pPr; p = Docx4j_Helper.factory.createP(); pPr=Docx4j_Helper.factory.createPPr(); Jc jc =Docx4j_Helper.factory.createJc(); jc.setVal(JcEnumeration.CENTER); pPr.setJc(jc); p.setPPr(pPr); return p; } /** * 设置段落内容 */ private void setParagraphContent(P p, RPr rpr,String content) { Text t = Docx4j_Helper.factory.createText(); t.setSpace("preserve"); t.setValue(content); R run = Docx4j_Helper.factory.createR(); run.setRPr(rpr); run.getContent().add(t); p.getContent().add(run); }
结果为:
全文完。