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 == 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.