Aller au contenu

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).

Fenêtre de terminal
composer require nextpdf/server

Associe un transport. L’entrée doit contenir une racine <table> avec des lignes <tr> et des cellules <th>/<td>.

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.

OutilRôleNiveau de risque
create_pdfOuvre la sessionSûr
set_fontDéfinit la police du texte des cellules (facultatif, avant add_table)Prudence
add_tableNettoie et met en page le tableauPrudence
output_pdfRestitue et renvoie le PDFApprobation requise / Revue (base64)

Le catalogue d’outils fait foi. Les outils disponibles dépendent du niveau installé.

  1. create_pdf (A4 portrait, titre) → document_id.
  2. add_table avec une chaîne <table>...</table> complète (une ligne d’en-tête et des lignes de données).
  3. output_pdf → base64 ou, avec un file_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.

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é.

  • 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.page dans la réponse, ou appelle add_page à l’avance.

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é.

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.

ÉnoncéSpécificationClausereference_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

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.

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.

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.

TransportDisponibleNotes
MCP (stdio)OuiUn HTML volumineux gonfle la trame stdio.
RESTOuiEnvoie le HTML dans le corps de la requête.
gRPCOuiUnaire ; des limites de taille de message s’appliquent.

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.

Sortie base64 :

{ "allowed": true }

La sortie vers un fichier renvoie l’enveloppe de défi documentée dans output-approval.