Files

40 lines
2.3 KiB
Markdown
Raw Permalink Normal View History

# `pdf_sign_at_text` — Stempeln/Signieren an gefundener Textstelle
**Zweck:** Sucht eine Phrase im PDF-Text (z. B. eine Unterschriftszeile) und platziert relativ dazu einen Sichtvermerk-Stempel samt kryptografischer Signatur — ohne feste Koordinaten pflegen zu müssen. Robust gegen Layout-Verschiebungen der Vorlage. Der Stempel wird eingebrannt, die Datei in-place überschrieben. Wird die Phrase nicht gefunden, bricht der Task mit Fehler ab.
**Parameter**
| Name | Pflicht? | Default | Beschreibung |
|---|---|---|---|
| `file` | ja | — | Zu signierendes PDF (in-place). |
| `search` | ja | — | Exakte Suchphrase (ein oder mehrere Wörter, Whitespace wird normalisiert). Anker ist das **erste Wort** der Phrase. |
| `text` | ja | — | Stempeltext; `{{TODAY}}` steht hier zusätzlich bereit (Datum **zum Signierzeitpunkt**, nicht Workflow-Start). |
| `seite` | nein | `auto` | `auto` = alle Seiten durchsuchen, erste Treffer-Seite gewinnt; oder konkrete Seitennummer. |
| `case_sensitive` | nein | `false` | Groß-/Kleinschreibung bei der Suche beachten. |
| `x_offset_pt` | nein | `0` | X-Versatz in PDF-Punkten relativ zur linken Kante des Fundworts. |
| `y_offset_pt` | nein | `0` | Y-Versatz in PDF-Punkten relativ zur Oberkante des Fundworts. **Y=0 oben**; negativ = nach oben (über den Text). |
| `breite_pt` | nein | `120` | Stempelbreite in PDF-Punkten. |
| `hoehe_pt` | nein | `30` | Stempelhöhe in PDF-Punkten. |
| `fontsize` | nein | `12` | Schriftgröße des Stempeltexts (vertikal zentriert im Stempelrechteck). |
**Eingangswerte:** `{{latest_pdf_path}}` (typisch als `file`); Kontext-Variablen für den Stempeltext (z. B. `{{pruefer_nachname}}`).
**Ausgangswerte:**
- `latest_pdf_path`, `latest_pdf_url`
- Diagnose: `<task_id>_matched_page` (Fundseite), `<task_id>_matched_x`, `<task_id>_matched_y_top` (Fundposition in pt, Y top-down), `<task_id>_stamp_x`, `<task_id>_stamp_y` (tatsächliche Stempelposition inkl. Offsets)
```xml
<task type="pdf_sign_at_text" id="vorsitz_sig">
<config>
<file>{{latest_pdf_path}}</file>
<search>Anordnungsbefugten</search>
<seite>auto</seite>
<x_offset_pt>0</x_offset_pt>
<y_offset_pt>-25</y_offset_pt>
<breite_pt>120</breite_pt>
<hoehe_pt>30</hoehe_pt>
<text>{{TODAY}}, gez. {{pruefer_nachname}}</text>
</config>
</task>
```