package gutenberg.itext.pegdown; import com.itextpdf.text.Element; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import gutenberg.pegdown.TreeNavigation; import org.pegdown.ast.Node; import org.pegdown.ast.TableHeaderNode; import org.pegdown.ast.TableRowNode; import java.util.List; /** * @author <a href="http://twitter.com/aloyer">@aloyer</a> */ public class TableRowNodeProcessor extends Processor { @SuppressWarnings("unchecked") @Override public void process(int level, Node node, InvocationContext context) { TreeNavigation nav = context.treeNavigation(); boolean isHeaderRow = nav.ancestorTreeMatches(TableRowNode.class, TableHeaderNode.class); List<Element> elements = context.collectChildren(level, node); TableInfos tableInfos = context.peekTable(); PdfPTable table = tableInfos.getTable(); int col = 0; for (Element element : elements) { PdfPCell cell = (PdfPCell) element; cell.setHorizontalAlignment(tableInfos.columnAlignment(col)); table.addCell(cell); col += cell.getColspan(); } table.completeRow(); if (isHeaderRow) { int headerRows = table.getHeaderRows(); table.setHeaderRows(headerRows + 1); } } }