/**
  * Calculate our padding widths from the specified table style.
  * @param TableStyle $style
  */
 public function setPaddingFromStyle(TableStyle $style)
 {
     $verticalBorderLen = strlen(sprintf($style->getBorderFormat(), $style->getVerticalBorderChar()));
     $paddingLen = strlen($style->getPaddingChar());
     $this->extraPaddingAtBeginningOfLine = 0;
     $this->extraPaddingAtEndOfLine = $verticalBorderLen;
     $this->paddingInEachCell = $verticalBorderLen + $paddingLen + 1;
 }
Ejemplo n.º 2
0
 /**
  * Renders table cell with padding.
  *
  * @param array  $row
  * @param int    $column
  * @param string $cellFormat
  */
 private function renderCell(array $row, $column, $cellFormat)
 {
     $cell = isset($row[$column]) ? $row[$column] : '';
     $width = $this->getColumnWidth($column);
     // str_pad won't work properly with multi-byte strings, we need to fix the padding
     if (function_exists('mb_strlen') && false !== ($encoding = mb_detect_encoding($cell))) {
         $width += strlen($cell) - mb_strlen($cell, $encoding);
     }
     $width += Helper::strlen($cell) - Helper::strlenWithoutDecoration($this->output->getFormatter(), $cell);
     $content = sprintf($this->style->getCellRowContentFormat(), $cell);
     $this->output->write(sprintf($cellFormat, str_pad($content, $width, $this->style->getPaddingChar(), $this->style->getPadType())));
 }
Ejemplo n.º 3
0
 /**
  * Renders table cell with padding.
  *
  * @param array  $row
  * @param int    $column
  * @param string $cellFormat
  */
 private function renderCell(array $row, $column, $cellFormat)
 {
     $cell = isset($row[$column]) ? $row[$column] : '';
     $width = $this->getColumnWidth($column);
     if ($cell instanceof TableCell && $cell->getColspan() > 1) {
         // add the width of the following columns(numbers of colspan).
         foreach (range($column + 1, $column + $cell->getColspan() - 1) as $nextColumn) {
             $width += $this->getColumnSeparatorWidth() + $this->getColumnWidth($nextColumn);
         }
     }
     // str_pad won't work properly with multi-byte strings, we need to fix the padding
     if (function_exists('mb_strwidth') && false !== ($encoding = mb_detect_encoding($cell))) {
         $width += strlen($cell) - mb_strwidth($cell, $encoding);
     }
     if ($cell instanceof TableSeparator) {
         return sprintf($this->style->getBorderFormat(), str_repeat($this->style->getHorizontalBorderChar(), $width));
     }
     $width += Helper::strlen($cell) - Helper::strlenWithoutDecoration($this->output->getFormatter(), $cell);
     $content = sprintf($this->style->getCellRowContentFormat(), $cell);
     return sprintf($cellFormat, str_pad($content, $width, $this->style->getPaddingChar(), $this->style->getPadType()));
 }