private function _execPageBreakCallback($rowIndex, &$cellWidths, &$rowHeights, &$rowspanInfos, &$rows) { $table = $this->getTable(); if (!($callback = $table->getPageBreakCallback())) { return; } $table->setRows(array()); $callback($table); $numberOfNewRows = count($table->getRows()); if ($numberOfNewRows > 0) { $converter = new self($table, $this->cacheDir); $converter->compile(); // merge cell width array_splice($cellWidths, $rowIndex, 0, $converter->_getCellWidths()); $this->cellWidths = $cellWidths; // merge row heights array_splice($rowHeights, $rowIndex, 0, $converter->_getRowHeights()); $this->rowHeights = $rowHeights; // merge rowspan info $newRowspanInfos = $converter->_getRowspanInfos(); $reverseKeys = array_keys($rowspanInfos); rsort($reverseKeys, SORT_NUMERIC); //array_splice($rowspanInfos, $rowIndex, 0, $converter->_getRowspanInfos()); foreach ($reverseKeys as $r) { if ($r >= $rowIndex && isset($rowspanInfos[$r])) { $rowspanInfos[$r + $numberOfNewRows] = $rowspanInfos[$r]; unset($rowspanInfos[$r]); } } $this->rowspanInfos = $rowspanInfos; array_splice($rows, $rowIndex, 0, $table->getRows()); } $table->setRows($rows); }