Een HTML-tabel weergeven met NextPDF Connect
In één oogopslag
Sectie met titel “In één oogopslag”Geef gestructureerde tabelgegevens weer uit een HTML-tabelstring. add_table schoont de invoer op met een strikte DOMDocument-allowlist vóór de lay-out, zodat de uitvoer consistent blijft, ook wanneer de bronopmaak varieert. Gebruik de Core-tools create_pdf, add_table en output_pdf. De tabel wordt opgemaakt als een row/column-raster (CSS Tables 3 §3.1).
Installeren
Sectie met titel “Installeren”composer require nextpdf/serverKoppel een transport. De invoer moet een <table>-root bevatten met <tr>-rijen en <th>/<td>-cellen.
Conceptueel overzicht
Sectie met titel “Conceptueel overzicht”add_table dwingt een vaste element-allowlist af (table, thead, tbody, tfoot, tr, th, td, caption, b, i, u, strong, em, br, p, span). Alle attributen worden verwijderd van elk element — style, class, width, colspan, rowspan, id en de rest. Elke tag buiten de allowlist wordt vervangen door de eigen tekstinhoud. Celtekst gebruikt de actieve lettertypestatus van het document; die stel je met set_font in vóór add_table. De tekst wordt weergegeven met tekstweergave-operatoren in content-streamvolgorde (ISO 32000-2 §9.4). De lay-out-engine bepaalt de kolombreedtes, niet inline CSS.
API-oppervlak
Sectie met titel “API-oppervlak”| Tool | Rol | Risiconiveau |
|---|---|---|
create_pdf | Een sessie openen | Veilig |
set_font | Het lettertype van de celtekst instellen (optioneel, vóór add_table) | Voorzichtig |
add_table | De tabel saniteren en opmaken | Voorzichtig |
output_pdf | De PDF weergeven en retourneren | Goedkeuring vereist / Beoordeling (base64) |
De toolcatalogus is de gezaghebbende catalogus. Welke tools voor je beschikbaar zijn, hangt af van het geïnstalleerde niveau.
Codevoorbeeld — Snel aan de slag
Sectie met titel “Codevoorbeeld — Snel aan de slag”create_pdf(A4 staand, titel) →document_id.add_tablemet een volledige<table>...</table>-string (kopregel en gegevensrijen).output_pdf→ base64 of, met eenfile_path, een afgeschermde bestandsschrijfactie.
De cursor verplaatst zich tot onder de laatst weergegeven rij en laat ruimte over voor de inhoud die volgt.
Codevoorbeeld — Productie
Sectie met titel “Codevoorbeeld — Productie”Valideer de HyperText Markup Language (HTML) voordat je die verzendt. Stel het cellettertype in met set_font voor deterministische typografie. Als je op een standaardwaarde vertrouwt, is het uitvoerlettertype implementatieafhankelijk. Beperk het register via het beveiligingsbeleid om te bepalen welke tools de host mag aanroepen.
Randgevallen en valkuilen
Sectie met titel “Randgevallen en valkuilen”- Lege HTML of HTML zonder tabel. Invoer zonder
<table>retourneert een no-renderable-table-fout. - Misvormde opmaak. Ongebalanceerde tags retourneren een parsefout; valideer daarom eerst de structuur.
- Tabel breder dan de pagina. Verminder het aantal kolommen, kort de inhoud in of schakel over naar liggende oriëntatie.
- Overloop. Een lange tabel loopt door naar een nieuwe pagina. Controleer
position.pagein de respons of roep voorafadd_pageaan.
Prestaties
Sectie met titel “Prestaties”Een kleine tabel wordt binnen het budget weergegeven en de uitvoer is enkele KB groot. Het profiel is structural. Het opschonen verloopt in één enkele doorloop over de geparseerde DOM.
Beveiligingsnotities
Sectie met titel “Beveiligingsnotities”Het verwijderen van attributen is onvoorwaardelijk en kan niet worden omzeild. Het beschermt tegen style- en script-injectie via celopmaak. Geen inline CSS, eventhandler of javascript:-URL blijft behouden. De allowlist vormt de vertrouwensgrens; beschouw de weergegeven uitvoer daarom niet als een getrouwe reproductie van willekeurige bronstijl.
Conformiteit
Sectie met titel “Conformiteit”| Verklaring | Specificatie | Clausule | reference_id |
|---|---|---|---|
| Tabellen worden opgemaakt als een row/column-celraster. | CSS Tables 3 | §3.1 | |
| Tekst wordt weergegeven door tekstoperatoren in streamvolgorde. | ISO 32000-2 | §9.4 |
Commerciële context
Sectie met titel “Commerciële context”Niet van toepassing — elke tool hier maakt deel uit van Core.
Fragment uit de CSS-ondersteuningsmatrix (alleen geverifieerd)
Sectie met titel “Fragment uit de CSS-ondersteuningsmatrix (alleen geverifieerd)”add_table voert geen algemene CSS-engine uit. Het enige “CSS”-gedrag is het vaste tabelrastermodel: rijen en kolommen komen voort uit de tabelstructuur en de lay-out-engine kiest de breedtes. Inline-styling wordt opzettelijk niet ondersteund omdat attributen worden verwijderd. Voor CSS-dekking op engineniveau (niet-Connect) raadpleeg je de CSS-ondersteuningsmatrix van het project.
Beperking van single-pass streaming
Sectie met titel “Beperking van single-pass streaming”add_table parseert de aangeleverde opmaak eenmalig naar een DOM en maakt deze in één doorloop op. De opmaak wordt niet herberekend op basis van externe stylesheets. Een tabel die de pagina overschrijdt, gaat door naar de volgende pagina in plaats van met terugwerkende kracht te worden herberekend.
Geheugenbudget voor grote tabellen
Sectie met titel “Geheugenbudget voor grote tabellen”Zeer grote tabellen houden de geparseerde DOM en de opgemaakte cellen gedurende de hele aanroep in het geheugen. Splits grote datasets over meerdere add_table-aanroepen om binnen het piekgeheugenbudget te blijven.
Transportbeschikbaarheid
Sectie met titel “Transportbeschikbaarheid”| Transport | Beschikbaar | Notities |
|---|---|---|
| MCP (stdio) | Ja | Grote HTML laat het stdio-frame opzwellen. |
| REST | Ja | Verstuur de HTML in de body van de aanvraag. |
| gRPC | Ja | Unair; berichtgroottelimieten zijn van toepassing. |
HITL-risiconiveau
Sectie met titel “HITL-risiconiveau”create_pdf is Veilig; set_font en add_table zijn Voorzichtig; output_pdf is Goedkeuring vereist, verlaagd naar Beoordeling in base64-modus. Bestandsuitvoer blijft Goedkeuring vereist. Zie output-approval.
JSON-envelop van de bevestigingsgate
Sectie met titel “JSON-envelop van de bevestigingsgate”Base64-uitvoer:
{ "allowed": true }Bestandsuitvoer retourneert de challenge-envelop die in output-approval is gedocumenteerd.