Comment avoir une version imprimable d’un article ?

Faire un lien via un squelette d’impression : Méthodes traditionnelles pour SPIP 1.8 et SPIP 1.9, ou par plugin.

Avertissement

La façon normale et « standard » de procéder pour gérer l’impression est de fournir au navigateur (comme le fait la dist/) une feuille de style alternative destinée à l’impression.

<link rel="stylesheet" type="text/css" media="print" href="print.css" />

Pour plus de détail, nous vous renvoyons sur l’excellent article d’Openweb

Cette « petite contribution » ne s’adressera donc à vous que dans la mesure où vous voulez un squelette spécifique d’impression, que vous pourrez personnaliser à souhaît.

Jusqu’aux versions de SPIP 1.8

1/ Faire un squelette d’impression

2/ Faire un lien dans le squelette article, avec du texte ou une petite image d’imprimante, vers l’article en mode impression.

article_print.php3?id_article=[(#ID_ARTICLE)]

<a href="imprimer.php3?id_article=#ID_ARTICLE"
 title="afficher une version imprimable de cet article">
Imprimer l'article
</a>

À partir de SPIP 1.9

Il n’ y a plus de fichier d’appel en .php3.

1/ Mettre le squelette imprimer.html dans le répertoire squelettes à la racine de spip ou dans dist à défaut.

2/ Dans le squelette article.html

Je me suis posée la question de savoir comment insérer ce lien en spip 1.9.

J’avais d’abord trouvé cette solution un peu naïve avec la balise #URL_SITE :

<a href="#URL_SITEspip.php?page=imprimer&id_article=#ID_ARTICLE" onclick="window.open(this.href,'_blank');return false;">
Imprimer
</a>

3/ Cela a pour effet d’ouvrir la page dans un target _blank [1].

Pour être accessible, penser à mettre un « title » dans le lien.
On peut également insérer une image d’impression. Pour valider la page en xhtml strict, qui ne validerait pas avec un target blank [2] classique, on se sert de cette astuce dans le lien.

http://www.webmaster-hub.com/lofive...

<a href='#'onclick="window.open
(this.href,'_blank');return false;">

Sauf que, petit hic encore, le &id ne valide pas en xhtml

-  L’astuce donnée par James, consiste à remplacer par &amp ;

<div>
<a href="#URL_SITEspip.php?page=imprimer&id_article=#ID_ARTICLE" title="afficher une version imprimable de cet article" onclick="window.open(this.href,'_blank');return false;">
<img src='squelettes/impresora.gif' alt="impression" title="impression" />
</a>
Imprimer cet article
</div>

En fait, tout cela n’est pas très SPIP !

Il y a une balise beaucoup plus appropriée et une syntaxe beaucoup plus « spip » pour faire cela. Merci, encore une fois à James, de me l’avoir indiquée.

-  Utiliser : #URL_PAGE
Cf ce que dit la doc à propos de cette balisehttp://www.spip.net/
fr_article190...

#URL_PAGE (...) retourne une url de type « page » (...), vers la page passée en paramètre et qui pourra être utiliser dans un lien. Par exemple, pour accéder à la page générée par le squelette toto.html, située dans votre dossier-squelette, #URL_PAGEtoto généra automatiquement l’url spip.php ?page=toto. Un second paramètre est autorisé pour ajouter des paramètres à l’url. Exemple

#URL_PAGE {toto,id_article=#ID_ARTICLE}

génèrera l’url spip.php ?page=toto&id_article=XXX.

#URL_PAGE{imprimer}|parametre_url{id_article} 

-  La syntaxe peut même se racourcir à :

#URL_PAGE{imprimer,id_article=#ID_ARTICLE}

Nous devons donc mettre le lien suivant dans notre squelette article.html. Une syntaxe courte, belle, et qui en plus valide !

<div>
<a href="#URL_PAGE{imprimer,id_article=#ID_ARTICLE}" title="afficher une version imprimable de cet article" onclick="window.open(this.href,'_blank');return false;">
<img src='squelettes/impresora.gif' alt="impression" title="impression" />
</a>
Imprimer cet article
</div>

Cette solution en 1.9 reste pour tout ceux qui voudraient concevoir leur propre squelette d’impression, ou qui ne voudraient pas utiliser du javascript.

La solution plugin avec « Imprimir_documento »  [3]

Mise à jour SPIP-Contrib (juin 2007)
ce plugin est désormais documenté, pour la version française, dans cette rubrique

Il y a désormais un plugin imprimir_documento fait par JoseLuis, et disponible sur la zone.

Il y a aussi une contribution en espagnol faîte par l’auteur lui-même du plugin.

Je ne parle pas du tout l’espagnol pour traduire l’article de Joseluis, mais rapidement, quelques mots concernant ce plugin :

1/ Comme pour tous les plugins, récupérez le dernier zip à jour de cette contrib sur http://zone.spip.org/files/spip-zone/, décompactez le et placez le dossier « imprimir_documento_1_9 » obtenu dans votre répertoire /plugins (à créer à la racine de votre spip s’il n’existe pas encore), puis allez sur l’interface de gestion des plugins (menu Configuration > Gestion des plugins), cochez le plugin « imprimir_documento_1_9 » puis validez.

2/ Ensuite, dans votre squelette d’article ou de brève, insérer à l’endroit souhaité la balise #IMPRIMIR_DOCUMENTO** avec les deux astérix.

Ce petit plugin est basé sur un jeu de deux squelettes que vous pouvez très bien personnaliser si vous le souhaîtez, un de brève et un d’article :

-  imprimir_articulo.html
-  imprimir_breve.html

Et un petit script javascript qui lance une popup bien sympatique, contenu dans un script php :

-  baliza_imprimir_documento.php

3/ Il est possible de personnaliser le plugin :

-  Vous pouvez changer l’icone d’impression en renommant votre propre icone « impresora.gif » dans le répertoire plugin.

-  La typographie du style appliqué entre la balise #IMPRIMIR_DOCUMENTO** peut être changée à l’aide d’une balise span style dans le squelette, ou dans une feuille de style que ous créez :

<span style= "font-size: 65%;" >… </span>

-  Toutes les autres modifications se font dans baliza_imprimir_documento.php.

Ce qu’il reste à faire encore sur ce petit plugin

-  L’internationaliser en remplacant l’espagnol d’orgine des deux squelettes par des fichiers de langues et des chaînes de langues, ainsi que les quelques mots du fichier php.
-  Rendre le javascript d’appel de la popup compliant et valide.
-  et dans baliza_imprimir_documento.php, ligne 28, rajouter un attribut alt et title dans la balise img pour que ca valide xhtml.

<img src=\"$logo\" title=\"Impression\" alt=\"Impression\" />

En pièce jointe, le squelette de Joseluis, donné ici uniquement à titre d’exemple, pour appliquer la méthode d’impression en target _blank sans plugin, et sans javascript, ie dans une nouvelle fenêtre et une petite image d’impression fournie par le plugin. Mais naturellement, vous pouvez concevoir votre propre squelette d’impression.

Conclusion

Cette modeste contribution ne prétend en rien être novatrice, juste peut-être utile à certains. Cette question d’impression revient en effet souvent sur les listes et sur les forums.

Pour élargir un peu, dans le genre d’outil pratique pour le squelette article, signalons :
-  le plugin de Fil « Recommander » par mail. [4]
-  le plugin de Cédric « Article_pdf_1_9 », qui génère un .pdf de vos articles. [5]

À vos imprimantes !

Notes

[1Nous sommes d’habitude plutôt favorable à l’idée de laisser le choix au visiteur d’ouvrir un lien dans une nouvelle page ou un nouvelle onglet, plutôt que de le lui imposer de fait. Néanmoins, cela semble se justifier lorsqu’il s’agit d’ouvrir un squelette spécifique d’impression avec une mise en page particulière et épurée

[3Imprimir artículo o breve con SPIP 1.8 ó 1.9

D’ailleurs l’auteur propose une option de popup javascript pour la 1.8 et la 1.9, indépendemment du plugin. Vous pouvez donc avoir le choix de la popup javascript ou de la méthode target _blank décrite plus haut. Il semblerait toutefois que le script javascript ne valide pas la page en xhtml.

[4http://zone.spip.org/files/spip-zone/ en jquery, disponible sur la zone.

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom