Exemplo n.º 1
0
  /**
   * 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++;
    }
  }
Exemplo n.º 2
0
  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();
  }