- Je travaille en entreprise sur la recréation et le remplacement, avec du HTML, de formulaires auparavant remplis à la main sur papier/Excel par un outil web, donc j’ai rassemblé ici quelques notes sur le sujet.
- Présentation des bases du CSS qui permettent de contrôler l’apparence d’une page web à l’impression, ainsi que de quelques astuces et bonnes pratiques.
@page
@page est une règle CSS qui indique au navigateur les paramètres d’impression du site web.
@page englobe le DOM : sur le web, l’élément <html> est limité par les bords de l’écran, alors qu’à l’impression il est limité par @page.
- Les réglages de
@page correspondent globalement à ceux que l’on retrouve dans la boîte de dialogue d’impression du navigateur quand on appuie sur Ctrl+P.
@media print
- Il existe une media query
print qui permet d’écrire des styles appliqués uniquement lors de l’impression.
- On peut ajouter
display:none aux en-têtes, options, textes d’aide utilisateur, etc. qui ne doivent pas apparaître sur la version imprimée.
Largeur, hauteur, marges, padding
- Il faut bien comprendre le modèle de boîte, et la raison pour laquelle on définit souvent
margin: 0 dans @page est qu’on préfère gérer les marges au niveau des éléments du DOM.
- Il est plus simple de garder à l’esprit que
<html> occupe toute la feuille physique et que les marges se trouvent à l’intérieur du DOM.
Positionnement des éléments
- Lors de la conception du document, on place les éléments avec un HTML/CSS approprié.
- On peut aussi utiliser le positionnement absolu lorsqu’il faut créer des rectangles adaptés à une feuille d’étiquettes d’une taille précise, ou imprimer des données sur du papier avec un marquage particulier.
Documents multipages et éléments répétés
- Lorsqu’on écrit un générateur d’impression contenant des données tabulaires, comme une facture, si un
<table> se poursuit sur une deuxième page, le navigateur duplique automatiquement le <thead> en haut de chaque page.
- On peut générer les pages en JavaScript en découpant le tableau en plusieurs petits tableaux.
Mode portrait / paysage
- L’utilisateur peut remplacer les règles définies dans
@page s’il le souhaite.
- On peut créer des éléments
<style> distincts pour les modes portrait et paysage, puis basculer de l’un à l’autre avec JavaScript.
Source des données
- Il existe plusieurs façons d’injecter les données dans la page : emballer toutes les données dans les paramètres d’URL, ou utiliser JavaScript pour récupérer un enregistrement en base via une API.
- On peut définir
contenteditable pour permettre à l’utilisateur d’effectuer de petites modifications avant l’impression.
L’avis de GN⁺
- Cet article fournit aux développeurs web un guide utile pour écrire du CSS destiné à l’impression. Il sera particulièrement utile à celles et ceux qui travaillent à transformer des pages web en documents physiques.
- Le CSS d’impression est un sujet souvent négligé, mais il reste précieux, car de nombreuses entreprises doivent encore imprimer des documents importants.
- L’approche technique présentée dans l’article semble avoir été testée et validée en conditions réelles, et propose des solutions pratiques à des problèmes concrets.
- L’utilisation de la règle CSS
@page et de la query @media print est essentielle pour contrôler la taille du papier et les marges lors de l’impression d’une page web, et c’est un point que tout développeur web devrait connaître.
- L’article va au-delà d’une compréhension théorique du CSS d’impression en fournissant des exemples concrets et des conseils pratiques sur sa mise en œuvre, ce qui aide à réduire l’écart entre théorie et pratique.
2 commentaires
J’aimerais essayer d’en faire un petit projet la prochaine fois.
Avis Hacker News
Explication des styles d’impression préférés pour un site web personnel :
Retour d’expérience sur l’édition d’un livre avec Pagedjs.org :
Problèmes de prise en charge par les navigateurs du CSS d’impression :
Facilité de l’impression avec CSS :
Situation où la prise en charge de l’impression par les navigateurs est si mauvaise qu’il faut créer une application native :
Réflexion sur l’histoire et la situation actuelle de CSS :
Manière de créer des factures et certains livres électroniques avec HTML & CSS :
Mention de paper-css, utilisé pour générer des PDF via le navigateur.
Avantages de la production de documents imprimés avec HTML/CSS :
Retour d’expérience sur l’utilisation des compétences CSS pour proposer des profils de réseau social en version imprimable :