Créer un document PDF avec des images utilisant la transparence avec TeX/LaTeX n'est parait-il pas possible... == Le problème par l'exemple == On place 2 images qui se superposent: le résultat ne convient pas car par défaut la transparence des images n'est pas restituée. Voir la démonstration dans le fichier PDF '''[attachment:test-KO.pdf?format=raw test-KO.pdf]''' attaché à cette page. == Pourquoi ? == La commande ''pdflatex'' utilisée produit bien un PDF au format 1.4 supportant les transparences d'image, mais ''pdflatex'' ne sait pas comment prendre la transparence en compte... == La résolution == En fait, le support de la transparence dans le format PDF requiert l'association de l'image et d'un masque de transparence... Quézako ? Grossièrement, il faut donner une image supplémentaire correspondant au négatif de la transparence (en jargon technique, c'est le négatif du canal Alpha de l'image). Mais attention, ce masque doit absolument être dans un format en niveau de gris. Suivant les outils utilisés, on peut obtenir un masque en niveau de gris mais donné dans un espace de couleur RGB, là ça ne marche pas, car l'image est remplacée par un rectangle blanc... Voir la démonstration du résultat dans le fichier PDF '''[attachment:test-OK.pdf?format=raw test-OK.pdf]''' attaché à cette page. == Comment == * '''Création du masque de transparence :''' par exemple avec l'outil ''convert'' fourni avec [http://www.imagemagick.org ImageMagick] {{{ [guillaume ~]€ convert pkg.png -channel Alpha -negate -separate -type Grayscale mpkg.png [guillaume ~]€ file pkg.png mpkg.png pkg.png: PNG image data, 122 x 123, 8-bit colormap, non-interlaced mpkg.png: PNG image data, 122 x 123, 16-bit grayscale, non-interlaced }}} '''Remarque :''' * testé avec la version 6.3.5.9 sur Fedora 8 * on peut aussi ajoûter l'option ''-depth 8'' pour obtenir un masque plus léger et en niveau de gris de 8 bits * la version 5.6 sur RHEL3 ne supporte pas les options données ici [[BR]][[BR]] * '''En TeX/LaTeX, on insère l'image en utilisant une option supplémentaire :''' * Normalement, on insère l'image de cette façon : {{{ \pdfximage{pkg.png} \pdfrefximage\pdflastximage} }}} * Maintenant, il faut référencer le masque et insérer l'image avec une option ''attr'' comme dans l'exemple : {{{ \newcount\maskref \immediate\pdfximage{mpkg.png} \maskref=\pdflastximage \pdfximage attr {/SMask \the\maskref\space 0 R} {pkg.png} \pdfrefximage\pdflastximage} }}} '''Remarque :''' la directive '''\immediate''' est indispensable sinon le masque n'est pas inséré dans le PDF car il n'est pas directement utilisé avec une directive '''\pdfrefximage''' [[BR]][[BR]] * Utiliser la commande ''pdflatex'' normalement, par exemple, sous Linux : * télécharger l'archive [attachment:Tuto-LaTeX-PDF-Transparency.zip?format=raw Tuto-LaTeX-PDF-Transparency.zip] * Extraire les sources TeX/LaTeX : * [attachment:test-KO.tex?format=raw test-KO.tex] * [attachment:test-OK.tex?format=raw test-OK.tex] * [attachment:test-OK-20.tex?format=raw test-OK-20.tex] * Extraire toutes les images au format PNG dans le même dossier : * [attachment:tux.png?format=raw tux.png] & son masque [attachment:mtux.png?format=raw mtux.png] * [attachment:pkg.png?format=raw pkg.png] & ses 2 masques [attachment:mpkg.png?format=raw mpkg.png] & [attachment:mpkg-20.png?format=raw mpkg-20.png] * tester ''convert'' ou modifier les masques avec [http://www.gimp.org The Gimp] * générer les PDFs avec la commande par exemple pour utiliser [attachment:test-OK.tex?format=raw test-OK.tex] : {{{ pdflatex test-OK }}} * ouvrir le PDF généré pour voir le résultat == Plus loin dans la transparence == Le masque est en niveau de gris : * La couleur noire dans le masque indique les zones de l'image associée à ne pas afficher. * La couleur blanche, les zones à afficher de façon opaque. * Le niveau de gris a aussi une signification, un gris de 20% indique qu'il faut fondre la zone avec les couleurs en arrière-plan en leurs laissant 20% d'intensité. Si l'arrière plan est totalement blanc, l'image va être atténuée, sinon on peut faire apparaître une image en arrière-plan comme dans l'exemple '''[attachment:test-OK-20.pdf?format=raw test-OK-20.pdf]''' où le masque du logo [http://www.pkg.fr PKG] est défini pour une transparence de 20% de l'arrière-plan.