Concevoir une feuille de style pour l’impression

Les feuilles de style pour les imprimantes ne peuvent convenir à celles utilisées pour les écrans : un Design harmonieux sur un moniteur se révèle désastreux à l’impression, comme les fonds colorés. En outre, les imprimantes utilisent une résolution plus élevée, et la notion de pixel est difficilement transposable pour le papier. Enfin, il impossible de prévoir les caractéristiques de l’imprimante et les préférences de l’utilisateur : impression en noir et blanc ? impression en mode portrait ou paysage ?… taille de la feuille ?…

Les feuilles de style dédiées à l’impression sont toujours reconnues avec les navigateurs, contrairement à handled pour les périphériques de poche : pourquoi utiliser une solution complexe et coûteuse en ressources comme JavaScript ou Php ?

Si une impression normée s’avère souhaitable, il vaut mieux alors générer un document Pdf à la volée.

Cependant, il n’est pas judicieux de concevoir une feuille de style sophistiquée dans les moindres détails : comme le recours à l’impression reste marginal, les règles peuvent être rudimentaires.

Aussi avons-nous décidé de lâcher prise pour l’impression : nous allons utiliser des unités relatives avec em, nous ne spécifierons pas une police de caractères, et afficherons du noir et blanc. Ainsi, le navigateur gèrera par défaut l’impression… avec des résultats moins hasardeux !

En revanche, nous avons développé une solution spécifique pour la gestion des liens, des acronymes et des images, qui permet de tirer parti astucieusement des spécificités du medium Print.

Quelques propriétés…

D’abord, appelons le medium Print dans l’en-tête de nos pages Html

<link rel="stylesheet" href="http://www.monsite.com/styles/print.css" type="text/css" media="print" />

Réglons ensuite l’apparence de notre site…

body {
  color: #000000;
  /* Nous imprimons en noir et blanc */
  font-family: serif;
  /* Permet de spécifier une police à empattements plus lisible sur le papier. */
  font-size: 1em;
  margin: 1.5em
}

Ensuite, cachons les éléments purement décoratifs ou non significatifs, images ou non…

#adsense, #advertising {
  display: none
}

Imprimons nos liens en noir et blanc…

h1, h2, h3, h4, h5, h6 {
  color: #000000;
  padding: 0.5em;
  text-align: center;
  text-decoration: none
}
h1.a, h1 a:link, h1 a:visited, h2.a, h2 a:link, h2 a:visited, h3.a, h3 a:link, h3 a:visited, h4.a, h4 a:link, h4 a:visited, h5.a, h5 a:link, h5 a:visited, h6.a, h6 a:link, h6 a:visited {
  color: #000000;
  text-decoration: none
}

Préférons les unités relatives pour les bordures…

.postmetadata {
  border: thin solid #999999;
  /* Il existe trois unités relatives pour désigner la largeur de la bordure : 'thin', 'medium', ou 'thick'. */
  margin: 1em;
  padding: 1em
}

Continuons à jouer avec les unités relatives…

ol.commentlist li, ol.pinglist li {
  border: thin dotted #666666;
  list-style-position: inside;
  list-style-type: decimal;
  margin: 1.5em 0 0 1.5em;
  /* margin: 15px 0 0 15px; dans la feuille de style pour l'écran */
  padding: 0.5em;
  /* padding: 5px dans la feuille de style pour l'écran */
}

Gestion des liens et des acronymes

Par défaut, les liens et les acronymes sont imprimés en l’état, c’est-à-dire soulignés ou non. Néanmoins, un lien souligné n’est guère informatif pour le lecteur de la version imprimée, et il devra retourner sur le site pour retrouver l’adresse ! Aussi pourquoi ne pas afficher l’adresse du lien ou la signification de l’acronyme juste après l’affichage ? Css permet aisément de spécifier la propriété avec :a:after

h1 a:after, h2 a:after, h3 a:after, h4 a:after, h5 a:after {
  border-bottom: thin solid #000000;
  content: " ["attr(href)"]";
  /* Noter l'espace juste après le premier guillemet pour éviter que le contenu ne colle au lien. */
}
acronym:after, abbr:after {
  border-bottom: thin dotted #000000;
  content: " ["attr(title)"]"
}

Gestion des images

Pour les images, il ne semble pas toujours utile de les imprimer. En effet, la plupart des images ne présente aucune valeur informative, et l’impression d’une image d’une résolution de 72 pixels par pouce se révèle souvent catastrophique. C’est pourquoi, nous avons pris le parti de ne pas les afficher à l’impression (au passage, les droits d’auteur sont ainsi préservés), mais de signaler leur existence par deux moyens : avec le contenu de la balise alt, d’une part, et, d’autre part, avec la mention [img] (nous avons repris sobrement le nom de la balise Html pour assurer l’internationalisation de la feuille de style). Ces deux affichages peuvent sembler redondants, mais la pseudo-classe img:after n’est pas gérée par tous les navigateurs. Ainsi, le lecteur ne perd aucune information essentielle !

dl.gallery {
  text-align: left /* Nos images sont placées dans des listes de définition */
}
.gallery_dt, .gallery_dd {
  margin-left: 0 /* Évite le décalage à droite imposé par le navigateur */
}
.gallery dt a img {
  display: none
}
.gallery dt a img:after {
  content: " ["attr(alt)"] [alt]"
}
.gallery dt:after {
  color: #333333;
  content: "[img] ";
  font-style: italic
}
.gallery dd:after {
  color: #333333;
  font-style: normal
}
.gallery dt, .gallery_dd {
  font-style: italic
}

Nota. Le marquage sémantique d’une liste de définition permet une gestion plus fine de l’affichage.

Si l’on ne souhaite pas se passer de l’impression des images, peut-être vaut-il mieux proposer, à titre alternatif, le téléchargement d’une image à la résolution spécifique.

En revanche, nous ne savons pas gérer correctement les veuves (Widows) et les orphelines (Orphans) pour éviter l’affichage disgracieux de lignes isolées en haut ou en bas de page : gageons que Css 3, voire l’évolution des navigateurs, permettra de combler nos attentes de typographe !

Lien intéressant : Faites bonne impression avec les CSS.

 

Imprimer cet article

 

Partager cet article par…

  • courrier électronique
  • Facebook
  • Twitter
  • MySpace
  • Technocrati
  • LinkedIn
  • Digg
  • Delicious
  • Favoris Google
 
 

Mot(s) clef : , , , , , , , , , , , , , , , , , , , | Cet article a été publié le 22/02/2010 à 17:49 et modifié le 25/02/2010 à 0:31 par Vincent Roulet et est classé dans Conception, WebDesign. Vous pouvez suivre les réponses à cet article en vous abonnant au flux Rss 2.0. Vous pouvez écrire un commentaire ou poser un rétrolien manuel depuis votre propre site.

 

Laisser un message