gpt4 book ai didi

java - 如何设置Word文档的页面方向?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:49:02 26 4
gpt4 key购买 nike

我使用 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);

但是这个方法不能正常工作。我可以将页面方向设置为横向,当我在代码中读取页面方向时,我得到横向。好的。但是,如果我打开保存的文档,我会看到纵向格式。这个设置实际上不起作用。可能是什么问题呢?

作为解决方法,我不得不开始使用以横向或纵向格式手动创建的空白文档。但我想按需要的方向从头开始以编程方式创建文档。

例如POI HSSF and XSSF具有在横向和纵向模式之间切换的功能。这是setLandscape() org.apache.poi.ss.usermodel.PrintSetup 接口(interface)的方法。

但是 XWPFHWPF 呢?

最佳答案

您走的路非常正确。将方向设置为横向描述了纸张的一般方向,但仍需要纸张的大小。您的 CTPageSz 对象还没有。

这意味着除了调用 setOrient 之外,您还需要调用 setW 和 setH。这些调用采用代表 1/20 Point 的 BigIntegers。因此,对于风景 LETTER 类型的纸张,您只需:

pageSize.setW(BigInteger.valueOf(15840));
pageSize.setH(BigInteger.valueOf(12240));

要使 Word 将其识别为横向,宽度必须大于高度。如果您希望 setOrient 调用在打印时能够正常运行,您仍然希望保留它。

以下是 https://www.gnu.org/software/gv/manual/html_node/Paper-Keywords-and-paper-size-in-points.html 中的一些常用纸张尺寸(以磅为单位)你应该把它们乘以 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

关于java - 如何设置Word文档的页面方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20188953/

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