function split($child = null, $force_pagebreak = false)
 {
     if (is_null($child)) {
         parent::split();
         return;
     }
     if (count($this->_headers) && !in_array($child, $this->_headers, true) && !in_array($child->get_prev_sibling(), $this->_headers, true)) {
         $first_header = null;
         foreach ($this->_headers as $header) {
             $new_header = $header->deep_copy();
             if (is_null($first_header)) {
                 $first_header = $new_header;
             }
             $this->insert_child_before($new_header, $child);
         }
         parent::split($first_header);
     } else {
         if (in_array($child->get_style()->display, self::$ROW_GROUPS)) {
             parent::split($child);
         } else {
             $iter = $child;
             while ($iter) {
                 $this->_cellmap->remove_row($iter);
                 $iter = $iter->get_next_sibling();
             }
             parent::split($child);
         }
     }
 }
  /**
   * Override split() to remove all child rows and this element from the cellmap
   *
   * @param Frame $child
   * @param bool  $force_pagebreak
   *
   * @return void
   */
  function split(Frame $child = null, $force_pagebreak = false) {

    if ( is_null($child) ) {
      parent::split();
      return;
    }

    // Remove child & all subsequent rows from the cellmap
    $cellmap = $this->get_parent()->get_cellmap();
    $iter = $child;

    while ( $iter ) {
      $cellmap->remove_row($iter);
      $iter = $iter->get_next_sibling();
    }

    // If we are splitting at the first child remove the
    // table-row-group from the cellmap as well
    if ( $child === $this->get_first_child() ) {
      $cellmap->remove_row_group($this);
      parent::split();
      return;
    }

    $cellmap->update_row_group($this, $child->get_prev_sibling());
    parent::split($child);

  }
 /**
  * Split the table at $row.  $row and all subsequent rows will be
  * added to the clone.  This method is overidden in order to remove
  * frames from the cellmap properly.
  *
  * @param Frame $row
  */
 function split($child = null)
 {
     parent::split($child);
     // Update the cellmap
     $iter = $child;
     while ($iter) {
         $this->_cellmap->remove_row($iter);
         $iter = $iter->get_next_sibling();
     }
 }
 function split($child = null, $force_pagebreak = false)
 {
     if (is_null($child)) {
         parent::split();
         return;
     }
     $cellmap = $this->get_parent()->get_cellmap();
     $iter = $child;
     while ($iter) {
         $cellmap->remove_row($iter);
         $iter = $iter->get_next_sibling();
     }
     if ($child === $this->get_first_child()) {
         $cellmap->remove_row_group($this);
         parent::split();
         return;
     }
     $cellmap->update_row_group($this, $child->get_prev_sibling());
     parent::split($child);
 }
 /**
  * split the table at $row.  $row and all subsequent rows will be
  * added to the clone.  This method is overidden in order to remove
  * frames from the cellmap properly.
  *
  * @param Frame $child
  * @param bool  $force_pagebreak
  *
  * @return void
  */
 function split(Frame $child = null, $force_pagebreak = false)
 {
     if (is_null($child)) {
         parent::split();
         return;
     }
     // If $child is a header or if it is the first non-header row, do
     // not duplicate headers, simply move the table to the next page.
     if (count($this->_headers) && !in_array($child, $this->_headers, true) && !in_array($child->get_prev_sibling(), $this->_headers, true)) {
         $first_header = null;
         // Insert copies of the table headers before $child
         foreach ($this->_headers as $header) {
             $new_header = $header->deep_copy();
             if (is_null($first_header)) {
                 $first_header = $new_header;
             }
             $this->insert_child_before($new_header, $child);
         }
         parent::split($first_header);
     } else {
         if (in_array($child->get_style()->display, self::$ROW_GROUPS)) {
             // Individual rows should have already been handled
             parent::split($child);
         } else {
             $iter = $child;
             while ($iter) {
                 $this->_cellmap->remove_row($iter);
                 $iter = $iter->get_next_sibling();
             }
             parent::split($child);
         }
     }
 }
 /**
  * Override split() to remove all child rows and this element from the cellmap
  *
  * @param Frame $child
  */
 function split($child = null, $force_pagebreak = false)
 {
     if (is_null($child)) {
         parent::split();
         return;
     }
     // Remove child & all subsequent rows from the cellmap
     $cellmap = $this->get_parent()->get_cellmap();
     // ------------- my fix: (ydb1976@gmail.com)
     while ($child->get_node()->getAttribute("dontbreak")) {
         //
         $child = $child->get_prev_sibling();
     }
     // ------------- end of my fix
     $iter = $child;
     while ($iter) {
         $cellmap->remove_row($iter);
         $iter = $iter->get_next_sibling();
     }
     // If we are splitting at the first child remove the
     // table-row-group from the cellmap as well
     if ($child === $this->get_first_child()) {
         $cellmap->remove_row_group($this);
         parent::split();
         return;
     }
     $cellmap->update_row_group($this, $child->get_prev_sibling());
     parent::split($child);
 }