Apache孵化项目ODFDOM允许用户以编程方式阅读和创建各种打开的文档格式文件,包括电子表格。
我正在尝试为我正在创建的电子表格设置各种打印选项,使用他们重新设计的“简单API”,但是看起来他们还没有公开一种简单的方法来修改文档属性,例如页边距,页面尺寸(高度/宽度)和页面方向(横向/纵向)。
我需要从SpreadsheetDocument转到允许我修改这些值的内容。
答案 0 :(得分:3)
可以对SpreadsheetDocument提供访问的一些底层ODF对象进行必要的调用。首先,我们需要获取正确的文档属性参考(对于所有示例,“电子表格”是对创建的SpreadsheetDocument的引用):
StyleMasterPageElement defaultPage = spreadsheet.getOfficeMasterStyles().getMasterPage("Default");
String pageLayoutName = defaultPage.getStylePageLayoutNameAttribute();
OdfStylePageLayout pageLayoutStyle = defaultPage.getAutomaticStyles().getPageLayout(pageLayoutName);
PageLayoutProperties pageLayoutProps = PageLayoutProperties.getOrCreatePageLayoutProperties(pageLayoutStyle);
然后,我们可以设置各种属性,例如边距,方向和高度/宽度。请注意,页面方向值似乎需要高度和宽度值才能正常工作,高度广告宽度需要是所用方向的高度和宽度:
pageLayoutProperties.setPageHeight(pageHeightInMM);
pageLayoutProperties.setPageWidth(pageWidthInMM);
pageLayoutProperties.setPrintOrientation(PrintOrientation.LANDSCAPE);
pageLayoutProperties.setMarginLeft(leftMarginInMM);
pageLayoutProperties.setMarginRight(rightMarginInMM);
pageLayoutProperties.setMarginTop(topMarginInMM);
pageLayoutProperties.setMarginBottom(bottomMarginInMM);
我基于another developer's notes关于如何使用原始ODFDOM API执行此操作,并且能够使用此代码成功更改生成的文档的属性。