コード例 #1
0
  /**
   * Imports the Cell properties into the PatchRtfCell
   *
   * @param cell The PdfPCell to import
   * @since 2.1.3
   */
  private void importCell(PdfPCell cell) {
    this.content = new ArrayList<RtfBasicElement>();

    if (cell == null) {
      this.borders =
          new PatchRtfBorderGroup(
              this.document,
              PatchRtfBorder.CELL_BORDER,
              this.parentRow.getParentTable().getBorders());
      return;
    }

    // padding
    this.cellPadding = (int) this.parentRow.getParentTable().getCellPadding();
    this.cellPaddingBottom = cell.getPaddingBottom();
    this.cellPaddingTop = cell.getPaddingTop();
    this.cellPaddingRight = cell.getPaddingRight();
    this.cellPaddingLeft = cell.getPaddingLeft();

    // BORDERS
    this.borders =
        new PatchRtfBorderGroup(
            this.document,
            PatchRtfBorder.CELL_BORDER,
            cell.getBorder(),
            cell.getBorderWidth(),
            cell.getBorderColor());

    // border colors
    this.border = cell.getBorder();
    this.borderColor = cell.getBorderColor();
    this.borderColorBottom = cell.getBorderColorBottom();
    this.borderColorTop = cell.getBorderColorTop();
    this.borderColorLeft = cell.getBorderColorLeft();
    this.borderColorRight = cell.getBorderColorRight();

    // border widths
    this.borderWidth = cell.getBorderWidth();
    this.borderWidthBottom = cell.getBorderWidthBottom();
    this.borderWidthTop = cell.getBorderWidthTop();
    this.borderWidthLeft = cell.getBorderWidthLeft();
    this.borderWidthRight = cell.getBorderWidthRight();

    this.colspan = cell.getColspan();
    this.rowspan = 1; // cell.getRowspan();
    //        if(cell.getRowspan() > 1) {
    //            this.mergeType = MERGE_VERT_PARENT;
    //        }

    this.verticalAlignment = cell.getVerticalAlignment();

    if (cell.getBackgroundColor() == null) {
      this.backgroundColor = new RtfColor(this.document, 255, 255, 255);
    } else {
      this.backgroundColor = new RtfColor(this.document, cell.getBackgroundColor());
    }

    // does it have column composite info?
    java.util.List compositeElements = cell.getCompositeElements();
    if (compositeElements != null) {
      Iterator cellIterator = compositeElements.iterator();
      // does it have column info?
      Paragraph container = null;
      while (cellIterator.hasNext()) {
        try {
          Element element = (Element) cellIterator.next();
          // should we wrap it in a paragraph
          if (!(element instanceof Paragraph) && !(element instanceof List)) {
            if (container != null) {
              container.add(element);
            } else {
              container = new Paragraph();
              container.setAlignment(cell.getHorizontalAlignment());
              container.add(element);
            }
          } else {
            if (container != null) {
              RtfBasicElement[] rtfElements = this.document.getMapper().mapElement(container);
              for (int i = 0; i < rtfElements.length; i++) {
                rtfElements[i].setInTable(true);
                this.content.add(rtfElements[i]);
              }
              container = null;
            }
            // if horizontal alignment is undefined overwrite
            // with that of enclosing cell
            if (element instanceof Paragraph
                && ((Paragraph) element).getAlignment() == Element.ALIGN_UNDEFINED) {
              ((Paragraph) element).setAlignment(cell.getHorizontalAlignment());
            }

            RtfBasicElement[] rtfElements = this.document.getMapper().mapElement(element);
            for (int i = 0; i < rtfElements.length; i++) {
              rtfElements[i].setInTable(true);
              this.content.add(rtfElements[i]);
            }
          }
        } catch (DocumentException de) {
          de.printStackTrace();
        }
      }
      if (container != null) {
        try {
          RtfBasicElement[] rtfElements = this.document.getMapper().mapElement(container);
          for (int i = 0; i < rtfElements.length; i++) {
            rtfElements[i].setInTable(true);
            this.content.add(rtfElements[i]);
          }
        } catch (DocumentException de) {
          de.printStackTrace();
        }
      }
    }

    // does it have image info?

    Image img = cell.getImage();
    if (img != null) {
      try {
        RtfBasicElement[] rtfElements = this.document.getMapper().mapElement(img);
        for (int i = 0; i < rtfElements.length; i++) {
          rtfElements[i].setInTable(true);
          this.content.add(rtfElements[i]);
        }
      } catch (DocumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
    // does it have phrase info?
    Phrase phrase = cell.getPhrase();
    if (phrase != null) {
      try {
        RtfBasicElement[] rtfElements = this.document.getMapper().mapElement(phrase);
        for (int i = 0; i < rtfElements.length; i++) {
          rtfElements[i].setInTable(true);
          this.content.add(rtfElements[i]);
        }
      } catch (DocumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
    // does it have table info?
    PdfPTable table = cell.getTable();
    if (table != null) {
      this.add(table);
      //            try {
      //				RtfBasicElement[] rtfElements = this.document.getMapper().mapElement(table);
      //				for (int i = 0; i < rtfElements.length; i++) {
      //					rtfElements[i].setInTable(true);
      //					this.content.add(rtfElements[i]);
      //				}
      //			} catch (DocumentException e) {
      //				// TODO Auto-generated catch block
      //				e.printStackTrace();
      //			}
    }
  }