使用Apache poi设置页边距

4

使用Apache poi创建基本的Word文档,我需要更改页面边距。这个问题的答案似乎很完美,但我没有CTPageMar类。我正在使用3.10版本。有人在不同版本或不同方法中成功过吗?


如果您升级到Apache POI 3.11(最新稳定版本),会发生什么? - Gagravarr
我已经下载了(但没有安装)几个旧版本和3.11。没有一个jar文件似乎包含CTPageMar类。我问题中的链接是两年前的帖子,所以我想知道这个类是否已经被弃用。 - BendyMan
1
你需要检查 poi-ooxml-schemas jar 包。如果没有找到,那么请参考 Apache POI FAQ - Gagravarr
@Gagravarr 您,先生,是一颗明星。 - BendyMan
1个回答

7
感谢Gagravarr指引我方向。看来我没有完整的ooxml-schemas-1.1.jar文件。 这段代码现在能够完美地设置边距。

 CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();
 CTPageMar pageMar = sectPr.addNewPgMar();
 pageMar.setLeft(BigInteger.valueOf(720L));
 pageMar.setTop(BigInteger.valueOf(360L));
 pageMar.setRight(BigInteger.valueOf(720L));
 pageMar.setBottom(BigInteger.valueOf(360L));

不确定单位是什么,但720对应半英寸!

1
正如常见问题解答所提到的,为了长期解决这个问题,您需要向Apache POI提交一个使用该类的单元测试,然后它将自动包含在下一个poi-ooxml-schemas jar中。如果您还扩展Usermodel代码以提供边距友好接口,则可以获得额外的分数! - Gagravarr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接