diff --git a/exportKaffeeliste.php b/exportKaffeeliste.php index 5ba96f7..0018733 100644 --- a/exportKaffeeliste.php +++ b/exportKaffeeliste.php @@ -65,6 +65,13 @@ define('EXPORT_HARD_MIN_ROW_HEIGHT_MM', 2.0); // Overhead je Zeile. Ohne Beruecksichtigung summiert sich das ueber viele // Zeilen zu mehreren mm und kann einen ungewollten Seitenumbruch ausloesen. define('EXPORT_ROW_OVERHEAD_MM', 0.2); +// Groesse der Marke unten rechts (Hinweis auf die Kaffeeliste): Faktor auf +// alle Masse in MyCustomPDFWithWatermark::planWatermark(). Schrift und Tasse +// wachsen gemeinsam, damit die Proportionen stimmen. +define('PLAN_WATERMARK_SCALE', 1.5); +// Platz, den die Marke am Seitenfuss belegt - inklusive Dampffaehnchen und +// etwas Luft zur Tabelle. +define('PLAN_WATERMARK_BAND_MM', 8.0); $allActive = ledger_fetch_participant_summaries($pdo, $tenantId, ['active_only' => true]); $memberCount = count($allActive); @@ -84,9 +91,9 @@ function export_page_row_budget_mm(bool $hasFooter, bool $hasSeitenHinweis, bool if ($hasFooter) { $budget -= 12.0; } elseif ($hasPlanWatermark) { - // Der Hinweis auf die Kaffeeliste braucht deutlich weniger Platz als - // eine Fusszeile - steht beides, deckt deren Band ihn mit ab. - $budget -= 6.0; + // Der Hinweis auf die Kaffeeliste braucht weniger Platz als eine + // Fusszeile - steht beides, deckt deren Band ihn mit ab. + $budget -= PLAN_WATERMARK_BAND_MM; } if ($hasSeitenHinweis) { $budget -= EXPORT_HINT_ROW_MM; @@ -198,37 +205,42 @@ class MyCustomPDFWithWatermark extends TCPDF { return; } + // Alle Masse haengen an diesem Faktor, damit Schrift und Tasse + // gemeinsam wachsen und die Marke ihre Proportionen behaelt. 1.0 war + // die erste, zu kleine Fassung. + $skala = PLAN_WATERMARK_SCALE; + $rechterRand = $this->getPageWidth() - 5.0; // Text und Symbol teilen sich eine gedachte Zeile: Cell() zentriert // den Schriftzug zuverlaessig in deren Hoehe, die Tasse wird auf // dieselbe Mittellinie gezeichnet. Text() waere hier die schlechtere // Wahl - sein y-Bezugspunkt haengt an Schriftmetriken und ergab in // der Probe einen um Millimeter versetzten Schriftzug. - $zeilenHoehe = 4.0; + $zeilenHoehe = 4.0 * $skala; $zeileOben = $this->getPageHeight() - 5.0 - $zeilenHoehe; $mitte = $zeileOben + ($zeilenHoehe / 2); - $this->SetFont('helvetica', '', 7); + $this->SetFont('helvetica', '', 7 * $skala); $this->SetTextColor(130, 130, 130); $textBreite = $this->GetStringWidth($this->planWatermarkLabel); - $tasseBreite = 2.6; - $tasseHoehe = 2.2; - $abstand = 1.0; - $henkelBreite = 1.0; + $tasseBreite = 2.6 * $skala; + $tasseHoehe = 2.2 * $skala; + $abstand = 1.0 * $skala; + $henkelBreite = 1.0 * $skala; $tasseX = $rechterRand - $textBreite - $abstand - $tasseBreite - $henkelBreite; $tasseY = $mitte - ($tasseHoehe / 2); $this->SetDrawColor(130, 130, 130); - $this->SetLineWidth(0.2); + $this->SetLineWidth(0.2 * $skala); // Tassenkoerper: nur unten abgerundet ('0011' = unten rechts/links). - $this->RoundedRect($tasseX, $tasseY, $tasseBreite, $tasseHoehe, 0.7, '0011', 'D'); + $this->RoundedRect($tasseX, $tasseY, $tasseBreite, $tasseHoehe, 0.7 * $skala, '0011', 'D'); // Henkel: halber Bogen an der rechten Seite. - $this->Ellipse($tasseX + $tasseBreite, $mitte, 0.8, 0.6, 0, 270, 90, 'D'); + $this->Ellipse($tasseX + $tasseBreite, $mitte, 0.8 * $skala, 0.6 * $skala, 0, 270, 90, 'D'); // Zwei Dampffaehnchen ueber der Tasse. - $this->Line($tasseX + 0.7, $tasseY - 1.1, $tasseX + 0.7, $tasseY - 0.4); - $this->Line($tasseX + 1.7, $tasseY - 1.1, $tasseX + 1.7, $tasseY - 0.4); + $this->Line($tasseX + (0.7 * $skala), $tasseY - (1.1 * $skala), $tasseX + (0.7 * $skala), $tasseY - (0.4 * $skala)); + $this->Line($tasseX + (1.7 * $skala), $tasseY - (1.1 * $skala), $tasseX + (1.7 * $skala), $tasseY - (0.4 * $skala)); $this->SetXY($rechterRand - $textBreite, $zeileOben); $this->Cell($textBreite, $zeilenHoehe, $this->planWatermarkLabel, 0, 0, 'R');