Zum Inhalt springen

HTML-Tabelle mit NextPDF Connect rendern

Rendern Sie strukturierte Tabellendaten aus einem HTML-Tabellen-String. add_table bereinigt die Eingabe vor dem Layout anhand einer strikten DOMDocument-Allowlist, sodass die Ausgabe unabhängig davon konsistent bleibt, wie das Quell-Markup geschrieben ist. Verwendet werden die Werkzeuge create_pdf, add_table und output_pdf — alle Core. Die Tabelle wird in einem row/column-Raster angeordnet (CSS Tables 3 §3.1).

Terminal-Fenster
composer require nextpdf/server

Binden Sie einen Transport. Die Eingabe muss eine <table>-Wurzel mit <tr>-Zeilen und <th>-/<td>-Zellen enthalten.

add_table erzwingt eine feste Element-Allowlist (table, thead, tbody, tfoot, tr, th, td, caption, b, i, u, strong, em, br, p, span). Alle Attribute werden entfernt — von jedem Element: style, class, width, colspan, rowspan, id sowie alle übrigen Attribute. Jedes Tag außerhalb der Allowlist wird durch seinen Textinhalt ersetzt. Zellentext wird mit dem aktiven Schriftzustand des Dokuments gerendert, den Sie mit set_font vor add_table setzen. Der Text wird durch textanzeigende Operatoren in Content-Stream-Reihenfolge ausgegeben (ISO 32000-2 §9.4). Die Layout-Engine entscheidet über die Spaltenbreiten, nicht Inline-CSS.

WerkzeugRolleRisikostufe
create_pdfDie Sitzung öffnenSafe
set_fontDie Schriftart für den Zellentext setzen (optional, vor add_table)Caution
add_tableDie Tabelle bereinigen und anordnenCaution
output_pdfDas PDF rendern und zurückgebenApproval Required / Review (base64)

Der Werkzeugkatalog ist maßgeblich. Welche Werkzeuge Ihnen zur Verfügung stehen, hängt von der installierten Stufe ab.

  1. create_pdf (A4 Hochformat, Titel) → document_id.
  2. add_table mit einem vollständigen <table>...</table>-String (Kopfzeile und Datenzeilen).
  3. output_pdf → base64 oder, mit einem file_path, kontrolliertes Schreiben in eine Datei.

Der Cursor rückt unter die zuletzt gerenderte Zeile vor und lässt Platz für anschließenden Inhalt.

Validieren Sie das HTML, bevor Sie es senden. Setzen Sie die Zellenschrift mit set_font, um deterministische Typografie zu erhalten — wenn Sie sich auf einen Standard verlassen, bleibt die Ausgabeschrift implementierungsabhängig. Um zu steuern, welche Werkzeuge der Host aufrufen darf, schränken Sie die Registry über die Sicherheitsrichtlinie ein.

  • Leeres oder Nicht-Tabellen-HTML. Eingaben ohne <table> geben einen Fehler “no-renderable-table” zurück.
  • Fehlerhaftes Markup. Unausgeglichene Tags führen zu einem Parse-Fehler; validieren Sie daher zuerst die Struktur.
  • Tabelle breiter als die Seite. Reduzieren Sie die Anzahl der Spalten, kürzen Sie den Inhalt oder wechseln Sie ins Querformat.
  • Überlauf. Eine hohe Tabelle wird auf einer neuen Seite fortgesetzt. Prüfen Sie position.page in der Antwort oder rufen Sie add_page vorab auf.

Eine kleine Tabelle wird innerhalb des Budgets gerendert; die Ausgabe umfasst einige KB. Das Profil ist structural. Die Bereinigung läuft in einem einzigen Durchgang über das geparste DOM.

Das Entfernen der Attribute erfolgt bedingungslos und kann nicht umgangen werden. Es schützt vor Style- und Skript-Injection im Zellen-Markup. Kein Inline-CSS, kein Event-Handler und keine javascript:-URL bleibt erhalten. Die Allowlist ist die Vertrauensgrenze; behandeln Sie die gerenderte Ausgabe daher nicht als originalgetreue Wiedergabe beliebiger Quell-Stilangaben.

AussageSpezifikationKlauselreference_id
Tabellen werden als row/column-Zellenraster angeordnet.CSS Tables 3§3.1
Text wird durch Textoperatoren in Stream-Reihenfolge angezeigt.ISO 32000-2§9.4

Nicht zutreffend — jedes Werkzeug hier ist Core.

Auszug aus der CSS-Unterstützungsmatrix (nur Verified)

Abschnitt betitelt „Auszug aus der CSS-Unterstützungsmatrix (nur Verified)“

add_table führt keine allgemeine CSS-Engine aus. Das einzige “CSS”-Verhalten ist das feste Tabellenraster-Modell: Zeilen und Spalten stammen aus der Tabellenstruktur, und die Layout-Engine legt die Breiten fest. Inline-Stilangaben werden bewusst nicht unterstützt, da Attribute entfernt werden. Für die CSS-Abdeckung auf Engine-Ebene (nicht Connect) siehe die CSS-Unterstützungsmatrix des Projekts.

add_table parst das übergebene Markup einmal in ein DOM und ordnet es in einem einzigen Durchgang an. Es gibt keinen Reflow auf Basis externer Stylesheets. Eine Tabelle, die die Seite überläuft, wird auf der nächsten Seite fortgesetzt, statt nachträglich neu umgebrochen zu werden.

Sehr große Tabellen halten das geparste DOM und die angeordneten Zellen während des gesamten Aufrufs im Speicher. Teilen Sie große Datensätze auf mehrere add_table-Aufrufe auf, um innerhalb des Spitzenspeicherbudgets zu bleiben.

TransportVerfügbarHinweise
MCP (stdio)JaGroßes HTML vergrößert den stdio-Frame.
RESTJaSenden Sie das HTML im Anfragekörper.
gRPCJaUnär; Nachrichtengrößenlimits gelten.

create_pdf ist Safe; set_font und add_table sind Caution; output_pdf ist Approval Required, im base64-Modus auf Review herabgestuft. Die Dateiausgabe bleibt Approval Required — siehe output-approval.

Base64-Ausgabe:

{ "allowed": true }

Die Dateiausgabe gibt den Challenge-Envelope zurück, der in output-approval dokumentiert ist.