From 4acdb08e6818b9fa9f05b47217b1a81fa493fbe3 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Tue, 29 Oct 2024 19:55:06 +0100 Subject: [PATCH] #368 new lib --- .../tcpdf/fonts/dejavu/dejavuserif.ctg.z | Bin 0 -> 6491 bytes lam/lib/lamtcpdf.inc | 31 ++++++++++++++---- lam/lib/pdf.inc | 13 ++++++-- 3 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 lam/lib/3rdParty/tcpdf/fonts/dejavu/dejavuserif.ctg.z diff --git a/lam/lib/3rdParty/tcpdf/fonts/dejavu/dejavuserif.ctg.z b/lam/lib/3rdParty/tcpdf/fonts/dejavu/dejavuserif.ctg.z new file mode 100644 index 0000000000000000000000000000000000000000..c078409080efdced2ea47f7cf8846293b38a625d GIT binary patch literal 6491 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 = $structure; $this->fontName = $fontName; // generic PDF information @@ -72,7 +72,7 @@ class LamTcpdf extends Tcpdf { * @inheritDoc */ public function defaultPageContent(int $pid = -1): string { - return ''; + return $this->addFooter(); } @@ -111,12 +111,31 @@ class LamTcpdf extends Tcpdf { /** * Adds the footer content + * + * @return string PDF output */ - public function addFooter(): void { - $this->SetY(-15); - $this->SetFont($this->fontName, '', LAMPDF_FONT_SIZE); + public function addFooter(): string { + $pid = $this->page->getPageId(); + $page = $this->page->getPage($pid); + $out = $this->graph->getStartTransform(); + $font = $this->font->insert($this->pon, $this->fontName, '', LAMPDF_FONT_SIZE); + $out .= $font['out']; + $prevcell = $this->defcell; + $this->defcell = $this::ZEROCELL; $footerText = _("This document was automatically created by LDAP Account Manager") . ' (' . getFormattedTime('Y-m-d H:i:s T') . ')'; - $this->Cell(0, 10, $footerText, 0, false, 'C', 0, '', 0, false, 'T', 'M'); + $out .= $this->getTextCell( + $footerText, + $this->toUnit($font['dw']), + $page['height'] - (2 * $this->toUnit($font['height'])), + $page['width'] - (4 * $this->toUnit($font['dw'])), + 0, + 0, + 0, + 'T', + ); + $out .= $this->graph->getStopTransform(); + $this->defcell = $prevcell; + return $out; } } diff --git a/lam/lib/pdf.inc b/lam/lib/pdf.inc index bc9ad80df..2005c39be 100644 --- a/lam/lib/pdf.inc +++ b/lam/lib/pdf.inc @@ -106,6 +106,7 @@ function createPdf($structure, $accounts, $pdfKeys, $account_type, $font, $retur include_once(__DIR__ . "/lamtcpdf.inc"); $pdf = new LamTcpdf($structure, $font); + $bbox = ['y' => 15, 'h' => 0]; $pageFormat = [ 'format' => 'A4', 'orientation' => 'P', @@ -117,9 +118,17 @@ function createPdf($structure, $accounts, $pdfKeys, $account_type, $font, $retur ] ]; - $pdf->font->insert($pdf->pon, $font, "B", LAMPDF_FONT_SIZE_BIG); + $font = $pdf->font->insert($pdf->pon, $font, "B", LAMPDF_FONT_SIZE_BIG); $pdf->addPage($pageFormat); - $pdf->addTextCell("TEST"); + for ($i = 0; $i < 50; $i++) { + $text = $pdf->getTextCell( + "$i Lorem ipsum dolor sit amet, consetetur sadipscing elitr.", + 15, + ($bbox['y'] + $bbox['h'] + $pdf->toUnit($font['ascent'])) + ); + $pdf->page->addContent($text); + $bbox = $pdf->getLastBBox(); + } /* $pdf = new LamTcpdf($structure, $font);