pdf_stempel_oben: Schriftart waehlbar (NATIONFD), Groesse/Stil/Abstand, Auto-Verkleinern

This commit is contained in:
erik
2026-07-08 17:31:47 +02:00
parent b652759bfc
commit f3b6e20039
2 changed files with 43 additions and 2 deletions
+9
View File
@@ -2,6 +2,15 @@
## 2026-07-08 (Listen-Tasks + MCP-Katalog)
- **`pdf_stempel_oben`: Schriftart wählbar.** Neue Parameter `schrift`, `schriftgroesse`,
`schriftstil`, `abstand_oben_mm`, `auto_verkleinern`. Neben den FPDF-Kern-Fonts steht
`NATIONFD` (*NationalFirstFontDotted*, gepunktet) zur Verfügung — dieselbe Schrift, die
`PDFER::stamper()` für die Vergabe-Unterlagen nutzt. Unbekannte Schrift → Fehlermeldung mit
Liste der verfügbaren. Eingebettete Schriften haben nur eine Schnittform, ein angeforderter
`schriftstil` wird verworfen (sonst FPDF-Abbruch „Undefined font"). Zellhöhe bleibt fix bei
7 mm, damit große Schriften oben stehen bleiben. Vorgabe (Helvetica 12 pt fett) unverändert —
`pdf_anlagen_merge` nutzt dieselbe Routine und bleibt unberührt. `auto_verkleinern` (Default an)
schrumpft zu breiten Text, statt ihn über den Seitenrand laufen zu lassen.
- **Neu: Task `liste`** — Tabelle direkt im Editor pflegen (freie Spalten, z. B. name/mail/rolle).
Ergebnis ist eine Liste aus Zeilen-Objekten: `{{var}}` (loop_foreach), `{{var}}_json`,
`{{var}}_anzahl`, `{{var}}_leer` und je Spalte `{{var}}_<spalte>_liste` (fertiger Mail-Verteiler).
+34 -2
View File
@@ -1,6 +1,6 @@
# `pdf_stempel_oben` — Text oben aufstempeln
**Zweck:** Stempelt Text oben mittig auf eine PDF-Seite (z.B. „Anlage 1“). Erhält Seitengröße/Orientierung des Originals (anders als pdf_text, das auf A4 normalisiert).
**Zweck:** Stempelt Text oben mittig auf eine PDF-Seite (z.B. „Anlage 1“). Erhält Seitengröße/Orientierung des Originals (anders als pdf_text, das auf A4 normalisiert). Die Schriftart ist wählbar — auch die gepunktete `NATIONFD`, mit der die Vergabe-Unterlagen gestempelt werden.
**Parameter**
@@ -9,8 +9,23 @@
| `datei` | ja | — | Quell-PDF. |
| `text` | ja | — | Stempeltext. |
| `seite` | nein | 1 | Seitennummer. |
| `schrift` | nein | Helvetica | Schriftart, siehe Tabelle unten. |
| `schriftgroesse` | nein | 12 | Punktgröße. NATIONFD wirkt ab etwa 40. |
| `schriftstil` | nein | B | leer (normal), B, I oder BI — nur bei den Kern-Fonts. |
| `abstand_oben_mm` | nein | 5 | Abstand der Stempelzeile vom oberen Seitenrand. |
| `auto_verkleinern` | nein | true | Verkleinert die Schrift, bis der Text zwischen die Seitenränder passt. |
| `dateiout` | nein | (automatisch) | Zielpfad. |
**Verfügbare Schriften**
| Name | Beschreibung |
|---|---|
| `Helvetica` | Kern-Font, Vorgabe (fett, 12 pt) |
| `Times`, `Courier` | Kern-Fonts |
| `NATIONFD` | *NationalFirstFontDotted* — gepunktete Schulausgangsschrift; dieselbe Schrift, die `PDFER::stamper()` in `0_vorlagen/resources/Vergabe/stamper.php` verwendet |
Die Liste wird zur Laufzeit aus dem FPDF-Font-Verzeichnis (`require/compose/vendor/fpdf/fpdf/src/Fpdf/font/`) ermittelt; wird eine unbekannte Schrift angegeben, nennt die Fehlermeldung die verfügbaren. Neue Schriften brauchen dort eine FPDF-Definitionsdatei (`<name>.php` + `.z`), keine reine `.ttf`.
**Ausgangswerte**
| Variable | Beschreibung |
@@ -30,6 +45,23 @@
</task>
```
**Vergabe-Stempel (wie stamper.php)**
```xml
<task type="pdf_stempel_oben" id="vergabestempel">
<config>
<datei>{{latest_pdf_path}}</datei>
<text>ALN-K {{submission_datum}}</text>
<schrift>NATIONFD</schrift>
<schriftgroesse>40</schriftgroesse>
</config>
</task>
```
**Technik / Hinweise**
- Komprimierte PDFs werden vorab via PDFER::test_and_uncompress entpackt.
- Komprimierte PDFs werden vorab via `PDFER::test_and_uncompress` entpackt.
- Eingebettete Schriften wie `NATIONFD` haben nur **eine** Schnittform; ein angeforderter `schriftstil` wird verworfen (FPDF bräche sonst mit „Undefined font“ ab).
- Die Zellhöhe ist bewusst fix (7 mm). FPDF setzt die Grundlinie auf `y + h/2 + 0.3 × Schrifthöhe` — eine mitskalierende Höhe würde große Schriften weit nach unten schieben. So bleibt der Stempel oben, wie bei `PDFER::stamper()`.
- Text wird nach `windows-1252` transliteriert (FPDF-Kern-Encoding).
- `TaskPdfAnlagenMerge` nutzt dieselbe Routine (`TaskPdfStempelOben::stempelObenMittig`) und bleibt bei der Vorgabe Helvetica 12 pt fett.