diff options
Diffstat (limited to 'app/Report/ReportPdf.php')
| -rw-r--r-- | app/Report/ReportPdf.php | 503 |
1 files changed, 259 insertions, 244 deletions
diff --git a/app/Report/ReportPdf.php b/app/Report/ReportPdf.php index 3f2b797d99..24e5672845 100644 --- a/app/Report/ReportPdf.php +++ b/app/Report/ReportPdf.php @@ -21,267 +21,282 @@ use Fisharebest\Webtrees\MediaFile; /** * Class ReportPdf */ -class ReportPdf extends ReportBase { - /** - * PDF compression - Zlib extension is required - * - * @var bool const - */ - const COMPRESSION = true; - /** - * If true reduce the RAM memory usage by caching temporary data on filesystem (slower). - * - * @var bool const - */ - const DISK_CACHE = false; - /** - * true means that the input text is unicode (PDF) - * - * @var bool const - */ - const UNICODE = true; - /** - * false means that the full font is embedded, true means only the used chars - * in TCPDF v5.9 font subsetting is a very slow process, this leads to larger files - * - * @var bool const - */ - const SUBSETTING = false; - /** - * A new object of the PDF class - * - * @var ReportTcpdf - */ - public $pdf; +class ReportPdf extends ReportBase +{ + /** + * PDF compression - Zlib extension is required + * + * @var bool const + */ + const COMPRESSION = true; + /** + * If true reduce the RAM memory usage by caching temporary data on filesystem (slower). + * + * @var bool const + */ + const DISK_CACHE = false; + /** + * true means that the input text is unicode (PDF) + * + * @var bool const + */ + const UNICODE = true; + /** + * false means that the full font is embedded, true means only the used chars + * in TCPDF v5.9 font subsetting is a very slow process, this leads to larger files + * + * @var bool const + */ + const SUBSETTING = false; + /** + * A new object of the PDF class + * + * @var ReportTcpdf + */ + public $pdf; - /** - * PDF Setup - ReportPdf - */ - public function setup() { - parent::setup(); + /** + * PDF Setup - ReportPdf + */ + public function setup() + { + parent::setup(); - // Setup the PDF class with custom size pages because WT supports more page sizes. If WT sends an unknown size name then the default would be A4 - $this->pdf = new ReportTcpdf($this->orientation, parent::UNITS, [ - $this->pagew, - $this->pageh, - ], self::UNICODE, 'UTF-8', self::DISK_CACHE); + // Setup the PDF class with custom size pages because WT supports more page sizes. If WT sends an unknown size name then the default would be A4 + $this->pdf = new ReportTcpdf($this->orientation, parent::UNITS, [ + $this->pagew, + $this->pageh, + ], self::UNICODE, 'UTF-8', self::DISK_CACHE); - // Setup the PDF margins - $this->pdf->SetMargins($this->leftmargin, $this->topmargin, $this->rightmargin); - $this->pdf->setHeaderMargin($this->headermargin); - $this->pdf->setFooterMargin($this->footermargin); - //Set auto page breaks - $this->pdf->SetAutoPageBreak(true, $this->bottommargin); - // Set font subsetting - $this->pdf->setFontSubsetting(self::SUBSETTING); - // Setup PDF compression - $this->pdf->SetCompression(self::COMPRESSION); - // Setup RTL support - $this->pdf->setRTL($this->rtl); - // Set the document information - // Only admin should see the version number - $appversion = WT_WEBTREES; - if (Auth::isAdmin()) { - $appversion .= ' ' . WT_VERSION; - } - $this->pdf->SetCreator($appversion . ' (' . parent::WT_URL . ')'); - // Not implemented yet - ReportBase::setup() - $this->pdf->SetAuthor($this->rauthor); - $this->pdf->SetTitle($this->title); - $this->pdf->SetSubject($this->rsubject); - $this->pdf->SetKeywords($this->rkeywords); + // Setup the PDF margins + $this->pdf->SetMargins($this->leftmargin, $this->topmargin, $this->rightmargin); + $this->pdf->setHeaderMargin($this->headermargin); + $this->pdf->setFooterMargin($this->footermargin); + //Set auto page breaks + $this->pdf->SetAutoPageBreak(true, $this->bottommargin); + // Set font subsetting + $this->pdf->setFontSubsetting(self::SUBSETTING); + // Setup PDF compression + $this->pdf->SetCompression(self::COMPRESSION); + // Setup RTL support + $this->pdf->setRTL($this->rtl); + // Set the document information + // Only admin should see the version number + $appversion = WT_WEBTREES; + if (Auth::isAdmin()) { + $appversion .= ' ' . WT_VERSION; + } + $this->pdf->SetCreator($appversion . ' (' . parent::WT_URL . ')'); + // Not implemented yet - ReportBase::setup() + $this->pdf->SetAuthor($this->rauthor); + $this->pdf->SetTitle($this->title); + $this->pdf->SetSubject($this->rsubject); + $this->pdf->SetKeywords($this->rkeywords); - $this->pdf->setReport($this); + $this->pdf->setReport($this); - if ($this->showGenText) { - // The default style name for Generated by.... is 'genby' - $element = new ReportPdfCell(0, 10, 0, 'C', '', 'genby', 1, '.', '.', 0, 0, '', '', true); - $element->addText($this->generatedby); - $element->setUrl(parent::WT_URL); - $this->pdf->addFooter($element); - } - } + if ($this->showGenText) { + // The default style name for Generated by.... is 'genby' + $element = new ReportPdfCell(0, 10, 0, 'C', '', 'genby', 1, '.', '.', 0, 0, '', '', true); + $element->addText($this->generatedby); + $element->setUrl(parent::WT_URL); + $this->pdf->addFooter($element); + } + } - /** - * Add an element - ReportPdf - * - * @param object|string $element Object or string - * - * @return int - */ - public function addElement($element) { - if ($this->processing == 'B') { - return $this->pdf->addBody($element); - } elseif ($this->processing == 'H') { - return $this->pdf->addHeader($element); - } elseif ($this->processing == 'F') { - return $this->pdf->addFooter($element); - } + /** + * Add an element - ReportPdf + * + * @param object|string $element Object or string + * + * @return int + */ + public function addElement($element) + { + if ($this->processing == 'B') { + return $this->pdf->addBody($element); + } elseif ($this->processing == 'H') { + return $this->pdf->addHeader($element); + } elseif ($this->processing == 'F') { + return $this->pdf->addFooter($element); + } - return 0; - } + return 0; + } - /** - * Run the report. - */ - public function run() { - $this->pdf->body(); - echo $this->pdf->Output('doc.pdf', 'S'); - } + /** + * Run the report. + */ + public function run() + { + $this->pdf->body(); + echo $this->pdf->Output('doc.pdf', 'S'); + } - /** - * Clear the Header - ReportPdf - */ - public function clearHeader() { - $this->pdf->clearHeader(); - } + /** + * Clear the Header - ReportPdf + */ + public function clearHeader() + { + $this->pdf->clearHeader(); + } - /** - * Clear the Page Header - ReportPdf - */ - public function clearPageHeader() { - $this->pdf->clearPageHeader(); - } + /** + * Clear the Page Header - ReportPdf + */ + public function clearPageHeader() + { + $this->pdf->clearPageHeader(); + } - /** - * Create a new Cell object - ReportPdf - * - * @param int $width cell width (expressed in points) - * @param int $height cell height (expressed in points) - * @param mixed $border Border style - * @param string $align Text alignement - * @param string $bgcolor Background color code - * @param string $style The name of the text style - * @param int $ln Indicates where the current position should go after the call - * @param mixed $top Y-position - * @param mixed $left X-position - * @param int $fill Indicates if the cell background must be painted (1) or transparent (0). Default value: 1 - * @param int $stretch Stretch carachter mode - * @param string $bocolor Border color - * @param string $tcolor Text color - * @param bool $reseth - * - * @return ReportPdfCell - */ - public function createCell( - $width, $height, $border, $align, $bgcolor, $style, $ln, $top, $left, $fill, $stretch, $bocolor, $tcolor, $reseth - ) { - return new ReportPdfCell($width, $height, $border, $align, $bgcolor, $style, $ln, $top, $left, $fill, $stretch, $bocolor, $tcolor, $reseth); - } + /** + * Create a new Cell object - ReportPdf + * + * @param int $width cell width (expressed in points) + * @param int $height cell height (expressed in points) + * @param mixed $border Border style + * @param string $align Text alignement + * @param string $bgcolor Background color code + * @param string $style The name of the text style + * @param int $ln Indicates where the current position should go after the call + * @param mixed $top Y-position + * @param mixed $left X-position + * @param int $fill Indicates if the cell background must be painted (1) or transparent (0). Default value: 1 + * @param int $stretch Stretch carachter mode + * @param string $bocolor Border color + * @param string $tcolor Text color + * @param bool $reseth + * + * @return ReportPdfCell + */ + public function createCell( + $width, $height, $border, $align, $bgcolor, $style, $ln, $top, $left, $fill, $stretch, $bocolor, $tcolor, $reseth + ) + { + return new ReportPdfCell($width, $height, $border, $align, $bgcolor, $style, $ln, $top, $left, $fill, $stretch, $bocolor, $tcolor, $reseth); + } - /** - * Create a new TextBox object - ReportPdf - * - * @param float $width Text box width - * @param float $height Text box height - * @param bool $border - * @param string $bgcolor Background color code in HTML - * @param bool $newline - * @param mixed $left - * @param mixed $top - * @param bool $pagecheck - * @param string $style - * @param bool $fill - * @param bool $padding - * @param bool $reseth - * - * @return ReportPdfTextbox - */ - public function createTextBox( - $width, $height, $border, $bgcolor, $newline, $left, $top, $pagecheck, $style, $fill, $padding, $reseth - ) { - return new ReportPdfTextbox($width, $height, $border, $bgcolor, $newline, $left, $top, $pagecheck, $style, $fill, $padding, $reseth); - } + /** + * Create a new TextBox object - ReportPdf + * + * @param float $width Text box width + * @param float $height Text box height + * @param bool $border + * @param string $bgcolor Background color code in HTML + * @param bool $newline + * @param mixed $left + * @param mixed $top + * @param bool $pagecheck + * @param string $style + * @param bool $fill + * @param bool $padding + * @param bool $reseth + * + * @return ReportPdfTextbox + */ + public function createTextBox( + $width, $height, $border, $bgcolor, $newline, $left, $top, $pagecheck, $style, $fill, $padding, $reseth + ) + { + return new ReportPdfTextbox($width, $height, $border, $bgcolor, $newline, $left, $top, $pagecheck, $style, $fill, $padding, $reseth); + } - /** - * Create a new Text object- ReportPdf - * - * @param string $style The name of the text style - * @param string $color HTML color code - * - * @return ReportPdfText - */ - public function createText($style, $color) { - return new ReportPdfText($style, $color); - } + /** + * Create a new Text object- ReportPdf + * + * @param string $style The name of the text style + * @param string $color HTML color code + * + * @return ReportPdfText + */ + public function createText($style, $color) + { + return new ReportPdfText($style, $color); + } - /** - * Create a new Footnote object - ReportPdf - * - * @param string $style Style name - * - * @return ReportPdfFootnote - */ - public function createFootnote($style) { - return new ReportPdfFootnote($style); - } + /** + * Create a new Footnote object - ReportPdf + * + * @param string $style Style name + * + * @return ReportPdfFootnote + */ + public function createFootnote($style) + { + return new ReportPdfFootnote($style); + } - /** - * Create a new Page Header object - ReportPdf - * - * @return ReportPdfPageheader - */ - public function createPageHeader() { - return new ReportPdfPageheader; - } + /** + * Create a new Page Header object - ReportPdf + * + * @return ReportPdfPageheader + */ + public function createPageHeader() + { + return new ReportPdfPageheader; + } - /** - * Create a new image object - ReportPdf - * - * @param string $file Filename - * @param mixed $x - * @param mixed $y - * @param int $w Image width - * @param int $h Image height - * @param string $align L:left, C:center, R:right or empty to use x/y - * @param string $ln T:same line, N:next line - * - * @return ReportPdfImage - */ - public function createImage($file, $x, $y, $w, $h, $align, $ln) { - return new ReportPdfImage($file, $x, $y, $w, $h, $align, $ln); - } + /** + * Create a new image object - ReportPdf + * + * @param string $file Filename + * @param mixed $x + * @param mixed $y + * @param int $w Image width + * @param int $h Image height + * @param string $align L:left, C:center, R:right or empty to use x/y + * @param string $ln T:same line, N:next line + * + * @return ReportPdfImage + */ + public function createImage($file, $x, $y, $w, $h, $align, $ln) + { + return new ReportPdfImage($file, $x, $y, $w, $h, $align, $ln); + } - /** - * Create a new image object from Media Object - ReportPdf - * - * @param MediaFile $media_file - * @param mixed $x - * @param mixed $y - * @param int $w Image width - * @param int $h Image height - * @param string $align L:left, C:center, R:right or empty to use x/y - * @param string $ln T:same line, N:next line - * - * @return ReportPdfImage - */ - public function createImageFromObject(MediaFile $media_file, $x, $y, $w, $h, $align, $ln) { - return new ReportPdfImage($media_file->getServerFilename(), $x, $y, $w, $h, $align, $ln); - } + /** + * Create a new image object from Media Object - ReportPdf + * + * @param MediaFile $media_file + * @param mixed $x + * @param mixed $y + * @param int $w Image width + * @param int $h Image height + * @param string $align L:left, C:center, R:right or empty to use x/y + * @param string $ln T:same line, N:next line + * + * @return ReportPdfImage + */ + public function createImageFromObject(MediaFile $media_file, $x, $y, $w, $h, $align, $ln) + { + return new ReportPdfImage($media_file->getServerFilename(), $x, $y, $w, $h, $align, $ln); + } - /** - * Create a new line object - ReportPdf - * - * @param mixed $x1 - * @param mixed $y1 - * @param mixed $x2 - * @param mixed $y2 - * - * @return ReportPdfLine - */ - public function createLine($x1, $y1, $x2, $y2) { - return new ReportPdfLine($x1, $y1, $x2, $y2); - } + /** + * Create a new line object - ReportPdf + * + * @param mixed $x1 + * @param mixed $y1 + * @param mixed $x2 + * @param mixed $y2 + * + * @return ReportPdfLine + */ + public function createLine($x1, $y1, $x2, $y2) + { + return new ReportPdfLine($x1, $y1, $x2, $y2); + } - /** - * Create an HTML element. - * - * @param $tag - * @param $attrs - * - * @return ReportPdfHtml - */ - public function createHTML($tag, $attrs) { - return new ReportPdfHtml($tag, $attrs); - } + /** + * Create an HTML element. + * + * @param $tag + * @param $attrs + * + * @return ReportPdfHtml + */ + public function createHTML($tag, $attrs) + { + return new ReportPdfHtml($tag, $attrs); + } } |
