gpt4 book ai didi

java - 在 Java 中使用 Apache POI XWPF 在同一个 Word 文档中横向和纵向页面

转载 作者:行者123 更新时间:2023-12-01 22:38:55 24 4
gpt4 key购买 nike

我正在尝试使用 Java 和 Apache POI 库创建一个包含一些横向页面和一些纵向页面的 Word 文档。我可以更改所有页面的方向,但有没有办法只更改其中某些页面的方向?我尝试过使用不同的部分和主体,但没有成功。

目前我已经编写了一个函数,它将 XWPFDocument 作为输入并更改新主体的方向。我原本希望更改新正文的方向不会影响之前的页面,但会影响整个文档。

private void changeOrientation(XWPFDocument document, String orientation){
CTDocument1 doc = document.getDocument();
CTBody body = doc.addNewBody();
body.addNewSectPr();
CTSectPr section = body.getSectPr();
if(!section.isSetPgSz()) {
section.addNewPgSz();
}
CTPageSz pageSize = section.getPgSz();
if(orientation.equals("landscape")){
pageSize.setOrient(STPageOrientation.LANDSCAPE);
pageSize.setW(BigInteger.valueOf(842 * 20));
pageSize.setH(BigInteger.valueOf(595 * 20));
}
else{
pageSize.setOrient(STPageOrientation.PORTRAIT);
pageSize.setH(BigInteger.valueOf(842 * 20));
pageSize.setW(BigInteger.valueOf(595 * 20));
}
}

谢谢!

最佳答案

事实证明需要 CTPPr(分节符),这可以通过以下代码完成:

private void changeOrientation(XWPFDocument document, String orientation){
CTDocument1 doc = document.getDocument();
CTBody body = doc.getBody();
CTSectPr section = body.addNewSectPr();
XWPFParagraph para = document.createParagraph();
CTP ctp = para.getCTP();
CTPPr br = ctp.addNewPPr();
br.setSectPr(section);
CTPageSz pageSize = section.getPgSz();
if(orientation.equals("landscape")){
pageSize.setOrient(STPageOrientation.LANDSCAPE);
pageSize.setW(BigInteger.valueOf(842 * 20));
pageSize.setH(BigInteger.valueOf(595 * 20));
}
else{
pageSize.setOrient(STPageOrientation.PORTRAIT);
pageSize.setH(BigInteger.valueOf(842 * 20));
pageSize.setW(BigInteger.valueOf(595 * 20));
}
}

但是,这只有效一次,因此页面无法改变方向。必须首先是所有横向页面,最后是纵向页面,反之亦然。

关于java - 在 Java 中使用 Apache POI XWPF 在同一个 Word 文档中横向和纵向页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26483837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com