diff options
Diffstat (limited to 'app/Report/ReportPdfFootnote.php')
| -rw-r--r-- | app/Report/ReportPdfFootnote.php | 277 |
1 files changed, 148 insertions, 129 deletions
diff --git a/app/Report/ReportPdfFootnote.php b/app/Report/ReportPdfFootnote.php index 3a1a657374..304204f40d 100644 --- a/app/Report/ReportPdfFootnote.php +++ b/app/Report/ReportPdfFootnote.php @@ -18,141 +18,160 @@ namespace Fisharebest\Webtrees\Report; /** * Class ReportPdfFootnote */ -class ReportPdfFootnote extends ReportBaseFootnote { - /** - * PDF Footnotes number renderer - * - * @param ReportTcpdf $renderer - */ - public function render($renderer) { - $renderer->setCurrentStyle('footnotenum'); - $renderer->Write($renderer->getCurrentStyleHeight(), $this->numText, $this->addlink); //source link numbers after name - } +class ReportPdfFootnote extends ReportBaseFootnote +{ + /** + * PDF Footnotes number renderer + * + * @param ReportTcpdf $renderer + */ + public function render($renderer) + { + $renderer->setCurrentStyle('footnotenum'); + $renderer->Write($renderer->getCurrentStyleHeight(), $this->numText, $this->addlink); //source link numbers after name + } - /** - * Write the Footnote text - * Uses style name "footnote" by default - * - * @param ReportTcpdf $pdf - */ - public function renderFootnote($pdf) { - if ($pdf->getCurrentStyle() != $this->styleName) { - $pdf->setCurrentStyle($this->styleName); - } - $temptext = str_replace('#PAGENUM#', $pdf->PageNo(), $this->text); - // Set the link to this y/page position - $pdf->SetLink($this->addlink, -1, -1); - // Print first the source number - // working - if ($pdf->getRTL()) { - $pdf->writeHTML('<span> .' . $this->num . '</span>', false, false, false, false, ''); - } else { - $temptext = '<span>' . $this->num . '. </span>' . $temptext; - } - // underline «title» part of Source item - $temptext = str_replace(['«', '»'], ['<u>', '</u>'], $temptext); - $pdf->writeHTML($temptext, true, false, true, false, ''); - } + /** + * Write the Footnote text + * Uses style name "footnote" by default + * + * @param ReportTcpdf $pdf + */ + public function renderFootnote($pdf) + { + if ($pdf->getCurrentStyle() != $this->styleName) { + $pdf->setCurrentStyle($this->styleName); + } + $temptext = str_replace('#PAGENUM#', $pdf->PageNo(), $this->text); + // Set the link to this y/page position + $pdf->SetLink($this->addlink, -1, -1); + // Print first the source number + // working + if ($pdf->getRTL()) { + $pdf->writeHTML('<span> .' . $this->num . '</span>', false, false, false, false, ''); + } else { + $temptext = '<span>' . $this->num . '. </span>' . $temptext; + } + // underline «title» part of Source item + $temptext = str_replace([ + '«', + '»', + ], [ + '<u>', + '</u>', + ], $temptext); + $pdf->writeHTML($temptext, true, false, true, false, ''); + } - /** - * Returns the height in points of the Footnote element - * - * @param ReportTcpdf $renderer - * - * @return float $h - */ - public function getFootnoteHeight($renderer) { - return 0; - } + /** + * Returns the height in points of the Footnote element + * + * @param ReportTcpdf $renderer + * + * @return float $h + */ + public function getFootnoteHeight($renderer) + { + return 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'); + /** + * 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; - } + // 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); - } + // 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"); + // 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 [$lw, 1, $lfct]; - } - } - $l = 0; - $lfct = substr_count($this->numText, "\n"); - if ($lfct > 0) { - $l = 2; - } + return [ + $lw, + 1, + $lfct, + ]; + } + } + $l = 0; + $lfct = substr_count($this->numText, "\n"); + if ($lfct > 0) { + $l = 2; + } - return [$lw, $l, $lfct]; - } + return [ + $lw, + $l, + $lfct, + ]; + } } |
