При использовании графического пользовательского интерфейса в LibreOffice мы выполняем вышеуказанное требование, щелкнув правой кнопкой мыши по таблице, выбрав «Свойства» (который открывает диалоговое окно «Свойства таблицы»), перейдя на «Поток текста» (вторая вкладка) и сняв флажок «Разрешить разбивку строки по страницам и столбцам» < /p>

Мы пытаемся сделать это программно, но у нас ничего не получается.Точная зависимость Maven, которую я использую (причина, по которой мы не пошли дальше, заключается в том, что версии выше этой, похоже, требуют Java> 1.7, в то время как мы застряли на Java 7):
org.apache.odftoolkit
simple-odf
0.8.2-incubating
jar-with-dependencies
Я создал образец тестового кода, который можно использовать в качестве игровой площадки. TL;DR Кажется, я нашел что-то, что любезно работает, не знаю, насколько надежно, но это уже что-то.
Мы пытались сделать следующее:
- опираться на предположение, что каждая новая строка должна наследовать стиль предыдущей строки и, в любом случае, наследовать атрибуты стиля родительской таблицы
- чтобы применить Атрибут стиля «может разрываться между строками» таблицы, судя по тому, как этот атрибут кажется «родительским» для нужного нам стиля (что-то, что означало бы, что «строка» может разрываться между страницами) (что, похоже, это не так).
Учтите, что документ, который мы открываем, уже содержит таблицу с именем «Таблица2», и, похоже, уже существует автоматический стиль с именем «Таблица2.1», содержащий атрибут «держать вместе», вероятно, потому, что у нас есть создал и сохранил исходный тестовый ODT с указанным выше атрибут уже «снят».
Код, который не работал:
InputStream is = OdftoolkittoolTest.class.getClassLoader().getResourceAsStream("test.odt");
TextDocument textDocument = TextDocument.loadDocument(is);
Table tbl = textDocument.getTableByName("Table2");
OdfStyle odfStyle = tbl.getStyleHandler().getStyleElementForWrite();
// this indeed sets the "allow table to break between pages",
// but not the "allow row to break between pages" attribute
StyleMayBreakBetweenRowsAttribute attr =
new StyleMayBreakBetweenRowsAttribute(textDocument.getFileDom(OdfSchemaDocument.OdfXMLFile.CONTENT));
attr.setBooleanValue(true);
odfStyle.setAttributeNode(attr);
// append a single row - once we do this, and inspect the resulting document
// the "allow row to break between pages" shows as "checked" (albeit with a "minus" sign over it -
// who knows what that means..)
tbl.appendRow();
// try to re-apply the "keep together" style on all rows - just in case this works
// (it doesn't work)
for (Row r : tbl.getRowList()) {
FoKeepTogetherAttribute attr2 = new FoKeepTogetherAttribute(textDocument.getFileDom(OdfSchemaDocument.OdfXMLFile.CONTENT));
attr2.setEnumValue(FoKeepTogetherAttribute.Value.ALWAYS);
r.getOdfElement().setOdfAttribute(attr2);
}
File targetFile = new File("c:\\temp\\lala.odt");
textDocument.save(targetFile);
Подробнее здесь: https://stackoverflow.com/questions/793 ... ross-pages