Marke im PDF um Faktor 1,5 vergroessert
Die erste Fassung war auf dem Ausdruck zu klein. Alle Masse haengen jetzt an PLAN_WATERMARK_SCALE, damit Schrift und Tasse gemeinsam wachsen und die Proportionen stimmen; das reservierte Band am Seitenfuss waechst mit (PLAN_WATERMARK_BAND_MM), damit die Tabelle weiterhin Abstand haelt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+26
-14
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user