Rendre un tableau HTML avec NextPDF Connect
Rend des données tabulaires structurées à partir d’une chaîne de tableau HTML. add_table nettoie l’entrée au moyen d’une liste d’autorisation DOMDocument stricte avant la mise en page, afin que le rendu reste cohérent quelle que soit l’écriture du balisage source. Les outils utilisés sont create_pdf, add_table et output_pdf — tous Core. Le tableau est mis en page sous forme de grille row/column (CSS Tables 3 §3.1).
Installation
Section intitulée « Installation »composer require nextpdf/serverAssocie un transport. L’entrée doit contenir une racine <table> avec des lignes <tr> et des cellules <th>/<td>.
Vue d’ensemble conceptuelle
Section intitulée « Vue d’ensemble conceptuelle »add_table applique une liste fixe d’éléments autorisés (table, thead, tbody, tfoot, tr, th, td, caption, b, i, u, strong, em, br, p, span). Tous les attributs sont supprimés de chaque élément — style, class, width, colspan, rowspan, id, ainsi que tous les autres. Toute balise absente de la liste d’autorisation est remplacée par son contenu textuel. Le texte des cellules est rendu avec l’état de police en cours du document, que tu définis avec set_font avant add_table. Le texte est émis par les opérateurs d’affichage du texte dans l’ordre du flux de contenu (ISO 32000-2 §9.4). C’est le moteur de mise en page, et non le CSS en ligne, qui détermine la largeur des colonnes.
Surface de l’API
Section intitulée « Surface de l’API »| Outil | Rôle | Niveau de risque |
|---|---|---|
create_pdf | Ouvre la session | Sûr |
set_font | Définit la police du texte des cellules (facultatif, avant add_table) | Prudence |
add_table | Nettoie et met en page le tableau | Prudence |
output_pdf | Restitue et renvoie le PDF | Approbation requise / Revue (base64) |
Le catalogue d’outils fait foi. Les outils disponibles dépendent du niveau installé.
Exemple de code — Démarrage rapide
Section intitulée « Exemple de code — Démarrage rapide »create_pdf(A4 portrait, titre) →document_id.add_tableavec une chaîne<table>...</table>complète (une ligne d’en-tête et des lignes de données).output_pdf→ base64 ou, avec unfile_path, une écriture contrôlée dans un fichier.
Le curseur se place sous la dernière ligne rendue, en laissant de la place pour le contenu qui suit.
Exemple de code — Production
Section intitulée « Exemple de code — Production »Valide le HTML avant de l’envoyer. Définis la police des cellules avec set_font pour une typographie déterministe — si tu t’en remets à une valeur par défaut, la police du rendu dépend de l’implémentation. Pour contrôler les outils que l’hôte peut appeler, restreins le registre via la politique de sécurité.
Cas limites et pièges
Section intitulée « Cas limites et pièges »- HTML vide ou sans tableau. Une entrée sans
<table>renvoie une erreur « aucun tableau à restituer ». - Balisage mal formé. Des balises déséquilibrées renvoient une erreur d’analyse, alors valide d’abord la structure.
- Tableau plus large que la page. Réduis le nombre de colonnes, raccourcis le contenu ou passe en orientation paysage.
- Débordement. Un tableau très haut se poursuit sur une nouvelle page. Vérifie
position.pagedans la réponse, ou appelleadd_pageà l’avance.
Performance
Section intitulée « Performance »Un petit tableau se rend dans les limites du budget, et le rendu ne pèse que quelques Ko. Le profil est structural. Le nettoyage s’effectue en une seule passe sur le DOM analysé.
Notes de sécurité
Section intitulée « Notes de sécurité »La suppression des attributs est inconditionnelle et ne peut pas être contournée. Elle protège contre l’injection de style et de script via le balisage des cellules. Aucun CSS en ligne, gestionnaire d’événements ou URL javascript: ne subsiste. La liste d’autorisation constitue la limite de confiance : ne considère donc pas le rendu comme une reproduction fidèle d’un style source arbitraire.
Conformité
Section intitulée « Conformité »| Énoncé | Spécification | Clause | reference_id |
|---|---|---|---|
| Les tableaux sont mis en page sous forme de grille de cellules row/column. | CSS Tables 3 | §3.1 | |
| Le texte est affiché par les opérateurs de texte dans l’ordre du flux. | ISO 32000-2 | §9.4 |
Contexte commercial
Section intitulée « Contexte commercial »Sans objet — chaque outil présenté ici est Core.
Extrait de la matrice de prise en charge CSS (éléments vérifiés uniquement)
Section intitulée « Extrait de la matrice de prise en charge CSS (éléments vérifiés uniquement) »add_table n’exécute pas de moteur CSS généraliste. Le seul comportement « CSS » est le modèle fixe de grille de tableau : les lignes et les colonnes proviennent de la structure du tableau, et le moteur de mise en page choisit les largeurs. Le style en ligne n’est pas pris en charge par conception, car les attributs sont supprimés. Pour la couverture CSS au niveau du moteur (hors Connect), consulte la matrice de prise en charge CSS du projet.
Contrainte de diffusion en une seule passe
Section intitulée « Contrainte de diffusion en une seule passe »add_table analyse une seule fois le balisage fourni en un DOM et le met en page en une seule passe. Il n’y a pas de recomposition à partir de feuilles de style externes. Un tableau qui déborde de la page se poursuit sur la page suivante au lieu d’être recomposé rétroactivement.
Budget mémoire pour les grands tableaux
Section intitulée « Budget mémoire pour les grands tableaux »Les très grands tableaux conservent en mémoire le DOM analysé et les cellules mises en page pendant tout l’appel. Répartis les grands jeux de données sur plusieurs appels add_table pour rester dans le budget mémoire de pointe.
Disponibilité des transports
Section intitulée « Disponibilité des transports »| Transport | Disponible | Notes |
|---|---|---|
| MCP (stdio) | Oui | Un HTML volumineux gonfle la trame stdio. |
| REST | Oui | Envoie le HTML dans le corps de la requête. |
| gRPC | Oui | Unaire ; des limites de taille de message s’appliquent. |
Niveau de risque HITL
Section intitulée « Niveau de risque HITL »create_pdf est Safe ; set_font et add_table sont Caution ; output_pdf est Approval Required, rétrogradé à Review en mode base64. La sortie vers un fichier reste Approval Required — voir output-approval.
Enveloppe JSON de la barrière de confirmation
Section intitulée « Enveloppe JSON de la barrière de confirmation »Sortie base64 :
{ "allowed": true }La sortie vers un fichier renvoie l’enveloppe de défi documentée dans output-approval.