package com.aspose.words.examples.programming_documents.tables.ColumnsAndRows;
import com.aspose.words.Cell;
import com.aspose.words.Document;
import com.aspose.words.NodeType;
import com.aspose.words.Paragraph;
import com.aspose.words.Row;
import com.aspose.words.Table;
import com.aspose.words.examples.Utils;
public class KeepTablesAndRowsFromBreakingAcrossPages {
private static final String dataDir = Utils.getSharedDataDir(KeepTablesAndRowsFromBreakingAcrossPages.class) + "Tables/";
public static void main(String[] args) throws Exception {
// Keeping a Row from Breaking across Pages
keepingARowFromBreakingAcrossPages();
// Keeping a Table from Breaking across Pages
keepingATableFromBreakingAcrossPages();
}
public static void keepingARowFromBreakingAcrossPages() throws Exception {
Document doc = new Document(dataDir + "Table.TableAcrossPage.doc");
// Retrieve the first table in the document.
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true);
// Disable breaking across pages for all rows in the table.
for (Row row : table) {
row.getRowFormat().setAllowBreakAcrossPages(false);
}
doc.save(dataDir + "Table.DisableBreakAcrossPages_out.doc");
}
@SuppressWarnings("unchecked")
public static void keepingATableFromBreakingAcrossPages() throws Exception {
Document doc = new Document(dataDir + "Table.TableAcrossPage.doc");
// Retrieve the first table in the document.
Table table = (Table) doc.getChild(NodeType.TABLE, 0, true);
// To keep a table from breaking across a page we need to enable KeepWithNext
// for every paragraph in the table except for the last paragraphs in the last
// row of the table.
for (Cell cell : (Iterable<Cell>) table.getChildNodes(NodeType.CELL, true)) {
// Call this method if table's cell is created on the fly
// newly created cell does not have paragraph inside
cell.ensureMinimum();
for (Paragraph para : cell.getParagraphs())
if (!(cell.getParentRow().isLastRow() && para.isEndOfCell()))
para.getParagraphFormat().setKeepWithNext(true);
}
doc.save(dataDir + "Table.KeepTableTogether_out.doc");
}
}