# Un point d’accès de flux imprimable pour vos articles, sans plugin PDF

> Un gabarit léger accessible par une variante d'URL, pensé pour l'impression navigateur plutôt que pour un rendu PDF fidèle au pixel près.

- Auteur : Clément Hadrot
- Publié le : 2022-12-16
- Mis à jour le : 2022-12-16
- Catégorie : Tips
- URL : https://wpmoderne.dev.wordpress-developpement.fr/tips/point-acces-flux-imprimable-articles-sans-plugin-pdf/

## L’essentiel

- Une variable de requête personnalisée déclenche un gabarit dédié
- template_include charge un fichier minimal sans en-tête ni menu
- Le rendu final dépend de l'impression du navigateur, pas d'un moteur PDF

Un cabinet comptable client nous a demandé un moyen simple pour que ses lecteurs impriment un article de conseil fiscal sans emporter le menu, le pied de page, la barre latérale et les trois bannières promotionnelles qui l'entourent habituellement. La demande n'était pas d'obtenir un PDF au rendu parfaitement figé, mais simplement une version imprimable propre, générée à la volée depuis une URL dédiée.

Plutôt que d'installer une extension complète de génération PDF pour un besoin aussi ciblé, un gabarit minimal chargé via `template_include` suffit largement, en s'appuyant sur les capacités natives d'impression du navigateur.

## Étape 1 : déclarer une variante d'URL reconnaissable

Un paramètre de requête simple, plutôt qu'une règle de réécriture complexe, convient parfaitement pour ce besoin ponctuel :

```
function cc_ajouter_variable_impression( $vars ) {
    $vars[] = 'vue_impression';
    return $vars;
}
add_filter( 'query_vars', 'cc_ajouter_variable_impression' );
```

L'URL `https://exemple-cabinet.fr/conseils-fiscaux/exemple-article/?vue_impression=1` devient ainsi reconnaissable par WordPress sans nécessiter de nouvelle règle de réécriture ni de vidage du cache de permaliens.

> L'essentiel à retenir : Une variable de requête personnalisée déclenche un gabarit dédié ; template_include charge un fichier minimal sans en-tête ni menu ; Le rendu final dépend de l'impression du navigateur, pas d'un moteur PDF

## Étape 2 : charger un gabarit dédié

Le filtre `template_include` permet de substituer entièrement le gabarit normalement choisi par la hiérarchie de thèmes de WordPress, à condition que la variable de requête soit présente :

```
function cc_charger_gabarit_impression( $gabarit ) {
    if ( get_query_var( 'vue_impression' ) && is_singular( 'post' ) ) {
        $gabarit_personnalise = get_stylesheet_directory() . '/gabarits/impression-article.php';
        if ( file_exists( $gabarit_personnalise ) ) {
            return $gabarit_personnalise;
        }
    }
    return $gabarit;
}
add_filter( 'template_include', 'cc_charger_gabarit_impression' );
```

## Étape 3 : un gabarit minimal, sans en-tête ni pied de page

```
<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
    <meta charset="<?php bloginfo( 'charset' ); ?>">
    <title><?php the_title(); ?></title>
    <style>
        body { font-family: Georgia, serif; max-width: 700px; margin: 40px auto; color: #111; }
        h1 { font-size: 24px; }
        @media print {
            .bouton-impression { display: none; }
        }
    </style>
</head>
<body>
    <?php while ( have_posts() ) : the_post(); ?>
        <button class="bouton-impression" onclick="window.print()">Imprimer</button>
        <h1><?php the_title(); ?></h1>
        <p>Publié le <?php echo esc_html( get_the_date() ); ?> — <?php the_author(); ?></p>
        <?php the_content(); ?>
    <?php endwhile; ?>
</body>
</html>
```

La règle `@media print` masque le bouton d'impression lui-même dans le résultat imprimé, un détail facile à oublier mais qui évite un bouton inutile figé au milieu du document final.

## Ajouter le lien depuis l'article normal

```
<a href="<?php echo esc_url( add_query_arg( 'vue_impression', '1' ) ); ?>">Version imprimable</a>
```

## Les limites de cette approche

- Le rendu final dépend entièrement du moteur d'impression du navigateur du visiteur : la mise en page peut varier légèrement d'un navigateur à l'autre, contrairement à un vrai moteur de génération PDF côté serveur.
- Les images ne sont pas retravaillées pour l'impression : une image très large peut déborder si le CSS d'impression n'est pas suffisamment travaillé.
- Ce gabarit ne convient pas à un besoin de mise en page fidèle au pixel près, de pagination automatique ou d'export en masse, qui reste hors du périmètre de cette solution légère.

> Pour un cabinet qui veut simplement que ses lecteurs impriment un conseil fiscal proprement, cette solution suffit très largement. Pour un catalogue produit à exporter en PDF fidèle avec mise en page complexe, un vrai moteur de génération PDF reste indispensable, et sort du cadre de cet article.

## En résumé

Une variable de requête, un filtre `template_include` et un gabarit minimal suffisent pour offrir une vue imprimable propre, sans dépendance à une extension PDF lourde. Cette solution reste délibérément limitée à l'impression navigateur et ne cherche pas à reproduire la fidélité d'un vrai document PDF généré côté serveur.
