# Générer une fiche technique PDF depuis les attributs d’un bloc produit B2B

> Un fabricant qui distribue des documentations commerciales veut générer un PDF de fiche technique directement depuis les attributs structurés de son bloc produit.

- Auteur : Clément Hadrot
- Publié le : 2026-03-07
- Mis à jour le : 2026-03-07
- Catégorie : Blocs Gutenberg
- URL : https://wpmoderne.dev.wordpress-developpement.fr/blocs/fiche-technique-pdf-attributs-bloc-b2b/

## L’essentiel

- Les attributs du bloc produit servent de source unique de vérité
- La génération PDF se fait à la demande, jamais au moment de l'enregistrement
- Un seul gabarit PDF suffit pour l'ensemble du catalogue

Combien de temps un commercial perd-il à recopier à la main les caractéristiques d'un produit dans un fichier PowerPoint avant chaque rendez-vous client ? Chez un fabricant de composants électroniques industriels vendant en B2B, cette tâche répétitive s'effectuait manuellement pour chacune des cent-dix références du catalogue, avec le risque constant qu'une caractéristique mise à jour sur le site n'ait pas été répercutée dans le document PDF correspondant, resté figé depuis sa dernière génération.

Le bloc produit du site, déjà utilisé pour l'affichage des fiches en ligne, portait déjà l'ensemble des caractéristiques techniques sous forme d'attributs structurés : tension nominale, plage de température, certifications, dimensions. Plutôt que de dupliquer cette donnée dans un outil de mise en page séparé, la solution retenue génère le PDF directement à partir de cette même source.

## La source unique de vérité : les attributs du bloc

Le bloc `fabricant/fiche-produit` déclare ses caractéristiques techniques comme des attributs typés, exactement comme n'importe quel autre attribut de bloc :

```
{
  "attributes": {
    "reference": { "type": "string" },
    "tensionNominale": { "type": "string" },
    "plageTemperature": { "type": "string" },
    "certifications": { "type": "array", "items": { "type": "string" } },
    "dimensionsMm": { "type": "string" }
  }
}
```

Ces attributs alimentent déjà l'affichage en ligne de la fiche produit : les réutiliser pour la génération du PDF garantit qu'aucune donnée ne peut diverger entre les deux supports, la mise à jour d'un attribut se répercutant automatiquement sur les deux sorties.

## Déclencher la génération à la demande

> L'essentiel à retenir : Les attributs du bloc produit servent de source unique de vérité ; La génération PDF se fait à la demande, jamais au moment de l'enregistrement ; Un seul gabarit PDF suffit pour l'ensemble du catalogue

Générer un PDF à chaque enregistrement de fiche produit aurait été inutile — la plupart des mises à jour ne concernent qu'un détail mineur, jamais consulté en PDF avant plusieurs semaines. La génération se déclenche donc à la demande, via une route REST appelée par un bouton « Télécharger la fiche PDF » affiché sur la page produit :

```
register_rest_route( 'fabricant/v1', '/fiche-pdf/(?P<id>\d+)', array(
    'methods'  => 'GET',
    'callback' => 'fabricant_generer_fiche_pdf',
) );

function fabricant_generer_fiche_pdf( $request ) {
    $produit_id = (int) $request['id'];
    $blocs      = parse_blocks( get_post_field( 'post_content', $produit_id ) );
    $attributs  = fabricant_extraire_attributs_bloc( $blocs, 'fabricant/fiche-produit' );

    $pdf = new \Dompdf\Dompdf();
    $pdf->loadHtml( fabricant_rendre_gabarit_pdf( $attributs ) );
    $pdf->render();

    return new WP_REST_Response(
        $pdf->output(),
        200,
        array( 'Content-Type' => 'application/pdf' )
    );
}
```

La fonction `fabricant_extraire_attributs_bloc()` parcourt l'arbre retourné par `parse_blocks()` pour retrouver le bloc concerné et ses attributs, une approche qui fonctionne quelle que soit la position du bloc dans le contenu de la page produit.

## Un seul gabarit pour tout le catalogue

Le gabarit HTML converti en PDF reste unique pour les cent-dix références : une fonction de rendu construit un document structuré à partir des attributs disponibles, avec des sections conditionnelles selon les données réellement renseignées :

```
function fabricant_rendre_gabarit_pdf( array $attributs ): string {
    ob_start();
    ?>
    <h1>Fiche technique — <?php echo esc_html( $attributs['reference'] ); ?></h1>
    <table>
        <tr><td>Tension nominale</td><td><?php echo esc_html( $attributs['tensionNominale'] ); ?></td></tr>
        <tr><td>Plage de température</td><td><?php echo esc_html( $attributs['plageTemperature'] ); ?></td></tr>
        <tr><td>Dimensions</td><td><?php echo esc_html( $attributs['dimensionsMm'] ); ?> mm</td></tr>
    </table>
    <?php
    return ob_get_clean();
}
```

Ce gabarit unique évite la maintenance de cent-dix fichiers de mise en page séparés : une modification de la charte visuelle des fiches PDF se répercute instantanément sur l'ensemble du catalogue, à la prochaine génération.

## Ce que cette approche a nécessité comme ajustement

- Les certifications, stockées en tableau, ont nécessité une boucle d'affichage spécifique dans le gabarit, absente du rendu HTML en ligne qui les affiche sous forme de badges visuels non transposables en PDF.
- Le poids de la bibliothèque de génération PDF a imposé de la charger uniquement sur cette route REST précise, jamais dans le chargement global du site, pour ne pas alourdir les autres pages.
- Un cache de fichier généré, valable une heure, évite de régénérer le même PDF à chaque clic répété d'un même visiteur sur une courte période.

> Une seule source de vérité pour deux formats de sortie coûte plus cher à construire au départ, mais élimine définitivement le risque qu'une fiche PDF affiche une caractéristique périmée depuis longtemps.

## Limites de ce dispositif

Le stockage des PDF déjà générés, leur archivage éventuel ou leur envoi automatique par e-mail à un commercial ne font pas partie de ce dispositif : chaque génération reste éphémère, recalculée à la demande à partir des attributs à jour, sans conservation d'un historique de versions du document. Une équipe souhaitant archiver ses fiches techniques générées devra ajouter une couche de stockage distincte, hors du périmètre de cette recette.

## En résumé

Générer une fiche technique PDF directement depuis les attributs d'un bloc produit garantit que la donnée affichée en ligne et celle imprimée par un commercial ne divergent jamais, sans dupliquer la moindre information dans un outil de mise en page séparé. Le coût principal de cette approche tient à l'écriture d'un gabarit suffisamment générique pour couvrir l'ensemble des cas du catalogue, un effort réalisé une seule fois pour l'ensemble des références.
