Java 如何为Word文档设置页面方向?

Java 如何为Word文档设置页面方向?,java,apache-poi,landscape-portrait,orientation-changes,xwpf,Java,Apache Poi,Landscape Portrait,Orientation Changes,Xwpf,我使用创建和处理MS Word文档。但是我在文档中没有找到如何更改页面方向 显然,这样做应该: XWPFDocument doc = new XWPFDocument(); CTDocument1 document = doc.getDocument(); CTBody body = document.getBody(); if (!body.isSetSectPr()) { body.addNewSectPr(); } CTSectPr section = body.getSec

我使用创建和处理
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);
但是这种方法不能正常工作。我可以将页面方向设置为横向,当我阅读代码中的页面方向时,我得到横向。好吧但是,如果我打开保存的文档,我会选择纵向格式。这个设置实际上不起作用。有什么问题吗

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

例如,具有在横向和纵向模式之间切换的功能。它是org.apache.poi.ss.usermodel.PrintSetup接口的方法


但是关于
XWPF
HWPF
呢?

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

这意味着除了您的setOrient调用之外,您还需要同时调用setW和setH。这些调用采用代表1/20点的大整数。因此,对于景观信函类型的纸张,您只需:

pageSize.setW(BigInteger.valueOf(15840));
pageSize.setH(BigInteger.valueOf(12240));
Word要将其识别为景观,其宽度必须大于高度。如果希望打印时setOrient调用能够正常运行,那么仍然需要保留setOrient调用

以下是一些常见的纸张尺寸,以点为单位,您应该将它们乘以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
答案是正确的

我只是需要添加额外的依赖项才能访问CTPageSz类

// SBT config
"org.apache.poi" % "poi-ooxml" % "4.1.0",     // Base library
"org.apache.poi" % "ooxml-schemas" % "1.4",   // required to access CTPageSz

你试着读了吗?@Gagravarr谢谢你的评论。但这并不能解决我的问题。我添加了所有必要jar的正确版本。我没有任何例外,所有的东西都编译并运行。但这个主题仍然是真实的。如何正确更改文档的方向?上述代码不能正常工作。我已按上述方式将页面方向设置为横向,但打开文档时仍会看到纵向格式。如果在word中将文档设置为横向,请另存为.docx,然后解压缩生成的文件(.docx是xml文件的压缩文件),方向设置在哪里?这是Apache POI无法解决的问题?它可能可以解决,但需要做一点工作,因为显然到目前为止还没有人需要此功能提交补丁…在横向模式下无法设置头,有解决方案吗@扎克