/** * Build a table representation from a <var>tbl</var> instance. Remember to set wordMLPackage * before using this method! */ public void build(Tbl tbl, Node content) throws TransformerException { if (tbl.getTblPr() != null && tbl.getTblPr().getTblStyle() != null) { styleId = tbl.getTblPr().getTblStyle().getVal(); } this.tblGrid = tbl.getTblGrid(); this.tblPr = tbl.getTblPr(); PropertyResolver pr; try { pr = new PropertyResolver(wordMLPackage); } catch (Docx4JException e) { throw new TransformerException("Hmmm", e); } effectiveTableStyle = pr.getEffectiveTableStyle(tbl.getTblPr()); CTTblPrBase tblPr = effectiveTableStyle.getTblPr(); if (tblPr != null && tblPr.getTblCellSpacing() != null) { borderConflictResolutionRequired = false; } // if (tblPr!=null // && tblPr.getTblW()!=null) { // if (tblPr.getTblW().getType()!=null // && (tblPr.getTblW().getType().equals("auto") // || tblPr.getTblW().getType().equals("nil") )) { // // @w:type // // nil, per Word 2007 implementation note // tableLayoutFixed = false; // } else if (tblPr.getTblW().getW()!=null ){ // // @w:w // if (tblPr.getTblW().getW() == BigInteger.ZERO) { // // Word 2007 implementation note // tableLayoutFixed = false; // } else { // tableLayoutFixed = true; // } // } else { // // no attributes!! // tableLayoutFixed = false; // } // } else { // // element omitted, so type is auto (2.4.61) // tableLayoutFixed = false; // } NodeList cellContents = content.getChildNodes(); // the w:tr TrFinder trFinder = new TrFinder(); new TraversalUtil(tbl, trFinder); int r = 0; for (Tr tr : trFinder.trList) { startRow(); handleRow(cellContents, tr, r); r++; } }
public static String getCssForTableCells(HTMLConversionContext context, Tbl tbl, int idx) { StringBuffer result = new StringBuffer(); PropertyResolver pr = context.getPropertyResolver(); Style s = pr.getEffectiveTableStyle(tbl.getTblPr()); result.append("#" + TableWriter.getId(idx) + " td { "); List<Property> properties = new ArrayList<Property>(); if (s.getTblPr() != null && s.getTblPr().getTblBorders() != null) { TblBorders tblBorders = s.getTblPr().getTblBorders(); if (tblBorders.getInsideH() != null) { if (tblBorders.getInsideH().getVal() == STBorder.NONE || tblBorders.getInsideH().getVal() == STBorder.NIL || tblBorders.getInsideH().getSz() == BigInteger.ZERO) { properties.add(new AdHocProperty("border-top-style", "none", null, null)); properties.add(new AdHocProperty("border-top-width", "0mm", null, null)); properties.add(new AdHocProperty("border-bottom-style", "none", null, null)); properties.add(new AdHocProperty("border-bottom-width", "0mm", null, null)); } else { properties.add(new BorderTop(tblBorders.getTop())); properties.add(new BorderBottom(tblBorders.getBottom())); } } if (tblBorders.getInsideV() != null) { if (tblBorders.getInsideV().getVal() == STBorder.NONE || tblBorders.getInsideV().getVal() == STBorder.NIL || tblBorders.getInsideV().getSz() == BigInteger.ZERO) { properties.add(new AdHocProperty("border-left-style", "none", null, null)); properties.add(new AdHocProperty("border-left-width", "0mm", null, null)); properties.add(new AdHocProperty("border-right-style", "none", null, null)); properties.add(new AdHocProperty("border-right-width", "0mm", null, null)); } else { properties.add(new BorderRight(tblBorders.getRight())); properties.add(new BorderLeft(tblBorders.getLeft())); } } } if (s.getTcPr() != null) { PropertyFactory.createProperties(properties, s.getTcPr()); } // Ensure empty cells have a sensible height // TODO - this is no good with IE8, which doesn't treat this // as a minimum; it won't resize if there is more :-( properties.add(new AdHocProperty("height", "5mm", null, null)); for (Property p : properties) { if (p != null) { result.append(p.getCssProperty()); } } result.append("}\n"); return result.toString(); }