Пример #1
0
 /**
  * Splits the text into lines to fit into a giving cell
  * and returns the last lines width
  *
  * @param ReportTcpdf $pdf
  *
  * @return array
  */
 public function getWidth($pdf)
 {
     // Setup the style name, a font must be selected to calculate the width
     $pdf->setCurrentStyle("footnotenum");
     // Check for the largest font size in the box
     $fsize = $pdf->getCurrentStyleHeight();
     if ($fsize > $pdf->largestFontHeight) {
         $pdf->largestFontHeight = $fsize;
     }
     // Returns the Object if already numbered else false
     if (empty($this->num)) {
         $pdf->checkFootnote($this);
     }
     // Get the line width
     $lw = ceil($pdf->GetStringWidth($this->numText));
     // Line Feed counter - Number of lines in the text
     $lfct = substr_count($this->numText, "\n") + 1;
     // If there is still remaining wrap width...
     if ($this->wrapWidthRemaining > 0) {
         // Check with line counter too!
         // but floor the $wrapWidthRemaining first to keep it bugfree!
         $wrapWidthRemaining = (int) $this->wrapWidthRemaining;
         if ($lw >= $wrapWidthRemaining || $lfct > 1) {
             $newtext = '';
             $lines = explode("\n", $this->numText);
             // Go throught the text line by line
             foreach ($lines as $line) {
                 // Line width in points
                 $lw = ceil($pdf->GetStringWidth($line));
                 // If the line has to be wraped
                 if ($lw >= $wrapWidthRemaining) {
                     $words = explode(" ", $line);
                     $addspace = count($words);
                     $lw = 0;
                     foreach ($words as $word) {
                         $addspace--;
                         $lw += ceil($pdf->GetStringWidth($word . " "));
                         if ($lw < $wrapWidthRemaining) {
                             $newtext .= $word;
                             if ($addspace != 0) {
                                 $newtext .= " ";
                             }
                         } else {
                             $lw = $pdf->GetStringWidth($word . " ");
                             $newtext .= "\n{$word}";
                             if ($addspace != 0) {
                                 $newtext .= " ";
                             }
                             // Reset the wrap width to the cell width
                             $wrapWidthRemaining = $this->wrapWidthCell;
                         }
                     }
                 } else {
                     $newtext .= $line;
                 }
                 // Check the Line Feed counter
                 if ($lfct > 1) {
                     // Add a new line feed as long as it’s not the last line
                     $newtext .= "\n";
                     // Reset the line width
                     $lw = 0;
                     // Reset the wrap width to the cell width
                     $wrapWidthRemaining = $this->wrapWidthCell;
                 }
                 $lfct--;
             }
             $this->numText = $newtext;
             $lfct = substr_count($this->numText, "\n");
             return array($lw, 1, $lfct);
         }
     }
     $l = 0;
     $lfct = substr_count($this->numText, "\n");
     if ($lfct > 0) {
         $l = 2;
     }
     return array($lw, $l, $lfct);
 }