Как можно задать размер страницы, ориентацию страницы и поля страницы таблицы ods с помощью ODFDOM?
ODFDOM проекта инкубации Apache позволяет пользователям программно читать и создавать различные файлы в формате открытого документа, включая электронные таблицы.
Я пытаюсь установить различные параметры печати для создаваемой таблицы, используя обновленный "Простой API", однако, похоже, они еще не предоставили простой способ изменения свойств документа, таких как поле страницы, размер страницы (высота) / ширина) и ориентация страницы (альбомная / книжная).
Мне нужно перейти от SpreadsheetDocument к чему-то, что позволит мне изменить эти значения.
1 ответ
Необходимые вызовы могут быть сделаны для некоторых базовых объектов ODF, к которым SpreadsheetDocument предоставляет доступ. Во-первых, нам нужно получить правильную ссылку на свойства документа (для всех примеров "электронная таблица" - это ссылка на созданный 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);
Я основал это на заметках другого разработчика о том, как это сделать с помощью исходных API ODFDOM, и смог успешно изменить свойства сгенерированного документа с помощью этого кода.