Zum Inhalt

PDF-Viewer für Dateianlagen (kc:pdfViewer)

Das kc:pdfViewer-Element zeigt die PDF-Anlagen eines Datensatzes direkt im Formular an — zum Blättern, Zoomen, Suchen und Drucken über den nativen Browser-PDF-Viewer. Typischer Anwendungsfall: eine Rechnungskontrolle, bei der man die eingescannte Eingangsrechnung neben den Kontierungsfeldern prüft.

Schnellstart über den Baukasten

  1. Öffne im Formular-Editor den Baukasten → Kategorie Layout → Baustein „PDF-Viewer (Dateianlage)" und ziehe ihn ins Formular.
  2. Aktiviere für das Formular die Dateianlagen (Formular-Eigenschaften → Erweiterte Einstellungen → Dateianlagen aktivieren). Ohne Anlagen hat der Viewer nichts anzuzeigen.
  3. In der Laufzeit lädt der Anwender die PDF über das Anlagen-Panel (Büroklammer-Symbol) hoch — sie erscheint sofort im Viewer.

Nur in der Laufzeit sichtbar

Der Viewer braucht einen Datensatz mit Anlagen. In der Editor-Vorschau zeigt er deshalb einen Platzhalter; die echte PDF erscheint erst beim Ausfüllen.

Schema

{
  "rechnung_pdf": {
    "type": "string",
    "kc:colspan": "full",
    "kc:pdfViewer": {
      "height": 560,
      "emptyHint": "Lade die Eingangsrechnung als PDF an.",
      "filename": "rechnung"
    }
  }
}
Option Bedeutung Default
height Höhe des Viewers in Pixeln 640
emptyHint Hinweistext, solange keine PDF angehängt ist „Noch keine PDF-Anlage."
filename optionale Vorauswahl: bevorzugt die Anlage, deren Dateiname exakt passt oder den Text enthält –

Das Element trägt keine Daten (es erzeugt keine DB-Spalte) — es ist ein reines Präsentations-Element wie kc:image. Sind mehrere PDFs angehängt, blendet der Viewer oben ein Auswahl-Dropdown ein; ↻ lädt die Anlagenliste neu, ↗ öffnet die PDF in einem neuen Tab.

Viewer erst zeigen, wenn eine PDF da ist

Der Viewer bringt zwar einen eigenen Leerzustand mit — wer das ganze Element (inkl. Rahmen) aber erst bei vorhandener Anlage einblenden will, setzt eine Sichtbarkeitsbedingung:

kc:visibleIf: "ctx.attachments.length > 0"

ctx.attachments steht in KCForms auch clientseitig in Bedingungen (kc:visibleIf/kc:requiredIf/kc:readonlyIf) bereit — die Länge ist die Anzahl der Anlagen des aktuellen Datensatzes und aktualisiert sich sofort beim Hoch-/Runterladen. In der Editor-Vorschau (ohne Datensatz) ist die Länge 0, das Element also ausgeblendet — zum Bearbeiten wählt man es in der Felder-Liste.

Beispiel-Formular

Unter System-Administration → Formular-Bausteine → Beispiele lässt sich das Demo-Formular „Rechnungskontrolle & Kontierung" installieren. Es zeigt den PDF-Viewer zusammen mit Lieferanten-, Rechnungs- und Kontierungsfeldern; ein onFieldChange-Hook rechnet Netto, MwSt-Betrag und Gesamt automatisch aus Bruttosumme und MwSt-Satz.

Technik / Sicherheit

Die PDF wird per fetch→Blob→Object-URL geladen und in einem <iframe> angezeigt — so rendert der Browser sie inline (mit eigener PDF-Leiste), obwohl der Download-Endpoint Content-Disposition: attachment sendet. Es werden nur Anlagen des aktuellen Datensatzes geladen (gespeicherte instanceId bzw. Draft-Token); ein direkter Zugriff auf fremde Anlagen ist nicht möglich.

Siehe auch: Präsentations-Elemente · Dateianlagen einschalten · Dateianlagen im Skript.