kap*_*and 6 java apache-poi orientation-changes landscape-portrait xwpf
我使用Apache POI XWPF来创建和处理MS Word文档.但我没有在文档中找到如何更改页面方向.
显然这种方式应该成功:
XWPFDocument doc = new XWPFDocument();
CTDocument1 document = doc.getDocument();
CTBody body = document.getBody();
if (!body.isSetSectPr()) {
body.addNewSectPr();
}
CTSectPr section = body.getSectPr();
if(!section.isSetPgSz()) {
section.addNewPgSz();
}
CTPageSz pageSize = section.getPgSz();
pageSize.setOrient(STPageOrientation.LANDSCAPE);
Run Code Online (Sandbox Code Playgroud)
但是这种方法不能正常工作.我可以将页面方向设置为横向,当我在代码中读取页面方向时,我会获得横向.行.但是,如果我打开保存的文件,我就是肖像格式.此设置实际上不起作用.可能是什么问题呢?
作为一种解决方法,我被迫开始使用横向或纵向格式手动创建的空白文档.但是我希望以所需的方向从头开始以编程方式创建文档.
例如,POI HSSF和XSSF具有在横向和纵向模式之间切换的功能.它是setLandscape()org.apache.poi.ss.usermodel.PrintSetup接口的方法.
但是,我们XWPF还是HWPF?
Zac*_*ach 14
你正走在正确的道路上.将方向设置为横向描述了纸张的大致方向,但仍需要纸张的大小.您的CTPageSz对象还没有.
这意味着除了setOrient调用之外,还需要setW和setH.这些调用采用代表1/20 Point的BigIntegers.因此,对于风景化的LETTER型纸张,您只需:
pageSize.setW(BigInteger.valueOf(15840));
pageSize.setH(BigInteger.valueOf(12240));
Run Code Online (Sandbox Code Playgroud)
要让Word将其识别为Landscaped,宽度必须大于高度.如果要在打印时使其正常运行,您仍然希望保持setOrient调用.
以下是https://www.gnu.org/software/gv/manual/html_node/Paper-Keywords-and-paper-size-in-points.html中的一些常见纸张尺寸, 您应该将它们乘以20并将它们相乘20在上面的方法调用中使用
Letter 612x792
LetterSmall 612x792
Tabloid 792x1224
Ledger 1224x792
Legal 612x1008
Statement 396x612
Executive 540x720
A0 2384x3371
A1 1685x2384
A2 1190x1684
A3 842x1190
A4 595x842
A4Small 595x842
A5 420x595
B4 729x1032
B5 516x729
Folio 612x936
Quarto 610x780
10x14 720x1008
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14300 次 |
| 最近记录: |