| 1 | Créer un document PDF avec des images utilisant la transparence avec TeX/LaTeX n'est parait-il pas possible... |
| 2 | |
| 3 | == Le problème par l'exemple == |
| 4 | 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. |
| 5 | |
| 6 | Voir le test-KO.pdf attaché à cette page. |
| 7 | |
| 8 | == Pourquoi ? == |
| 9 | 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... |
| 10 | |
| 11 | == La résolution == |
| 12 | 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... |
| 13 | |
| 14 | == Comment == |
| 15 | * '''Création du masque de transparence :''' par exemple avec l'outil ''convert'' fourni avec [http://www.imagemagick.org ImageMagick] |
| 16 | {{{ |
| 17 | [guillaume ~]€ convert pkg.png -channel Alpha -negate -separate -type Grayscale mpkg.png |
| 18 | [guillaume ~]€ file pkg.png mpkg.png |
| 19 | pkg.png: PNG image data, 122 x 123, 8-bit colormap, non-interlaced |
| 20 | mpkg.png: PNG image data, 122 x 123, 16-bit grayscale, non-interlaced |
| 21 | }}} |
| 22 | '''Remarque :''' |
| 23 | * testé avec la version 6.3.5.9 sur Fedora 8 |
| 24 | * on peut aussi ajoûter l'option ''-depth 8'' pour obtenir un masque plus léger et en niveau de gris de 8 bits |
| 25 | * la version 5.6 sur RHEL3 ne supporte pas les options données ici |
| 26 | [[BR]][[BR]] |
| 27 | * '''En TeX/LaTeX, on insère l'image en utilisant une option supplémentaire :''' |
| 28 | * Normalement, on insère l'image de cette façon : |
| 29 | {{{ |
| 30 | \pdfximage{pkg.png} |
| 31 | \pdfrefximage\pdflastximage} |
| 32 | }}} |
| 33 | * Maintenant, il faut référencer le masque et insérer l'image avec une option ''attr'' comme dans l'exemple : |
| 34 | {{{ |
| 35 | \newcount\maskref |
| 36 | \immediate\pdfximage{mpkg.png} |
| 37 | \maskref=\pdflastximage |
| 38 | \pdfximage attr {/SMask \the\maskref\space 0 R} {pkg.png} |
| 39 | \pdfrefximage\pdflastximage} |
| 40 | }}} |
| 41 | '''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''' |
| 42 | [[BR]][[BR]] |
| 43 | * Utiliser la commande ''pdflatex'' normalement |