public void visit(TableCellNode node) { String tag = inTableHeader ? "th" : "td"; List<TableColumnNode> columns = currentTableNode.getColumns(); TableColumnNode column = columns.get(Math.min(currentTableColumn, columns.size() - 1)); printer.println().print('<').print(tag); column.accept(this); if (node.getColSpan() > 1) printer.print(" colspan=\"").print(Integer.toString(node.getColSpan())).print('"'); printer.print('>'); visitChildren(node); printer.print('<').print('/').print(tag).print('>'); currentTableColumn += node.getColSpan(); }
public Rule Table() { Var<TableNode> node = new Var<TableNode>(); return NodeSequence( push(node.setAndGet(new TableNode())), Optional( NodeSequence( TableRow(), push(1, new TableHeaderNode()) && addAsChild(), ZeroOrMore(TableRow(), addAsChild()) ), addAsChild() // add the TableHeaderNode to the TableNode ), TableDivider(node), Optional( NodeSequence( TableRow(), push(1, new TableBodyNode()) && addAsChild(), ZeroOrMore(TableRow(), addAsChild()) ), addAsChild() // add the TableHeaderNode to the TableNode ), // only accept as table if we have at least one header or at least one body Optional(TableCaption(), addAsChild()), !node.get().getChildren().isEmpty() ); }
public Rule TableColumn(Var<TableNode> tableNode, Var<Boolean> pipeSeen) { Var<TableColumnNode> node = new Var<TableColumnNode>(new TableColumnNode()); return Sequence( NodeSequence( push(node.get()), Sp(), Optional(':', node.get().markLeftAligned()), Sp(), OneOrMore('-'), Sp(), Optional(':', node.get().markRightAligned()), Sp(), Optional('|', pipeSeen.set(Boolean.TRUE)) ), tableNode.get().addColumn((TableColumnNode) pop()) ); }
public Rule TableDivider(Var<TableNode> tableNode) { Var<Boolean> pipeSeen = new Var<Boolean>(Boolean.FALSE); return Sequence( Optional('|', pipeSeen.set(Boolean.TRUE)), OneOrMore(TableColumn(tableNode, pipeSeen)), pipeSeen.get() || tableNode.get().hasTwoOrMoreDividers(), Sp(), Newline() ); }
public void visit(TableCellNode node) { // String tag = inTableHeader ? "th" : "td"; List<TableColumnNode> columns = currentTableNode.getColumns(); TableColumnNode column = columns.get(Math.min(currentTableColumn, columns.size() - 1)); String pstr = printer.getString(); if (pstr.length() > 0) { if (pstr.endsWith("\n") || pstr.endsWith(" ")) { printer.print("|"); } else { printer.print(" |"); } } else { printer.print("|"); } column.accept(this); if (node.getColSpan() > 1) printer.print(" colspan=\"").print(Integer.toString(node.getColSpan())).print('"'); visitChildren(node); currentTableColumn += node.getColSpan(); }
public void visit(TableCellNode node) { // String tag = inTableHeader ? "th" : "td"; List<TableColumnNode> columns = currentTableNode.getColumns(); TableColumnNode column = columns.get(Math.min(currentTableColumn, columns.size() - 1)); String pstr = printer.getString(); if (pstr.length() > 0) { if (pstr.endsWith("\n") || pstr.endsWith(" ")) { printer.print("|"); } else { printer.print(" |"); } } else { printer.print("|"); } column.accept(this); if (node.getColSpan() > 1) printer.print(" colspan=\"").print(Integer.toString(node.getColSpan())).print('"'); visitChildren(node); currentTableColumn += node.getColSpan(); }
@Override public void process(int level, Node node, InvocationContext context) { TableNode tableNode = (TableNode) node; List<TableColumnNode> tableNodeColumns = tableNode.getColumns(); PdfPTable table = new PdfPTable(tableNodeColumns.size()); for (PdfPTableEvent tableEvent : tableEvents) { table.setTableEvent(tableEvent); } context.pushTable(new TableInfos(table, tableNodeColumns)); context.processChildren(level, node); context.popTable(); KeyValues kvs = context.iTextContext().keyValues(); Float spacingBefore = kvs.<Float>getNullable(TABLE_SPACING_BEFORE).or(5f); Float spacingAfter = kvs.<Float>getNullable(TABLE_SPACING_AFTER).or(5f); table.setSpacingBefore(spacingBefore); table.setSpacingAfter(spacingAfter); applyAttributes(context, table); context.append(table); }
public void visit(TableNode node) { currentTableNode = node; List<TableColumnNode> columns = node.getColumns(); if(ifColumnsHaveAlignmentSpecified(columns)) { printer.print("[cols=\""); printer.print(getColumnAlignment(columns)); printer.print("\"]"); printer.println(); } printer.print("|==="); visitChildren(node); printer.println(); printer.print("|==="); printer.println(); currentTableNode = null; }
public void visit(TableNode node) { currentTableNode = node; List<TableColumnNode> columns = node.getColumns(); if(ifColumnsHaveAlignmentSpecified(columns)) { printer.print("[cols=\""); printer.print(getColumnAlignment(columns)); printer.print("\"]"); printer.println(); } printer.print("|==="); visitChildren(node); printer.println(); printer.print("|==="); printer.println(); currentTableNode = null; }