Merci beaucoup Pierre-Yves. Je n’étais pas tombé sur
le fil que tu me fais lire mais j’avais imaginé (entre autres) cette solution. La lecture, dans ce fil, du fait qu’il faille aller dans
Edition ->
Liens et déconnecter les images pour que ça marche (donc, je suppose, à chaque ouverture de fichier) me confirme que j’ai eu raison d’essayer de trouver une autre solution, évidemment plus compliquée qu’une simple ligne de code mais pas forcément inintéressante sur le principe...
Parce que la perspective d’imaginer expliquer à des gens où placer des fichiers quand on sait qu’il y en a qui savent à peine ce qu’est un répertoire m’a rendu, l’espace d’un instant, un rien ronchon.... Mais il était clair que les fichier ODF ne sont pas
encore prévu pour cela et que ma moue n’y changerait rien. Alors, allant bouder dans mon coin, je me suis mis à réfléchir
moi aussi...
Stocker une image binaire dans un code de script ne peut se faire qu’en mode texte et, pour cela, il n’y a pas trente-six solutions mais une seule (ou presque) : la
base 64. Cela présente un inconvénient majeur pour les gros fichiers puisque l’on sait bien que l’inflation en termes de poids-octets est de l’ordre de 33%. Mais cette inflation est négligeable dans le cas des petits fichiers, ceux qui font entre un et dix kilo octets. Il existe une foison d’utilitaires pour coder n’importe quel fichier en base 64 et dans tous les systèmes d’exploitation possibles et imaginables. Ainsi, parmi d’autres, on pourra consulter
cette page pour les possesseurs de PC (Unix et w.). La commande est très simple à exprimer :
et produit sans problème le fichier escompté. Du reste, point n’est vraiment besoin d’installer un logiciel puisqu’encore des wagons de sites Web offrent également
ce service en ligne.
La manipulation correcte du
copier/coller alliée au bon usage du
rechercher/remplacer de n’importe quel éditeur de texte permet de
monter très facilement ce type de code :
Code : Tout sélectionner
' Flèche haut (fleche_01.png).
b64 (0) = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAqxQTFRFWgAC"
b64 (1) = "BS5jBjBqBjFuBjNyBDR6BjR3BjV7BTaEBjeBE0mhEUmqB0zOG0ycEU2zBlO2B1W3CVa6FVO/FlWr"
b64 (2) = "DFi8JlWbGVmwFFfTDlu+FVjTFljTF1u2GluyEF3AG1y2El/CGV3VHV7KHV3VFWLEF2TGGGbKGWbI"
b64 (3) = "OWGcIGTXGmjLHGjIHWvOKmjXIG3PKGvWKW3ZInDRJXLTLXDTJXTXDHj+L3LWSW+qKXXVMHTYEHv+"
b64 (4) = "K3fXMnbbQ3PHPHXbLnrZFH7+FX7+MX3bGIH+GYH+GoL+HYT+MILiKoPrHoX+H4X+IYf+Iof+Ioj+"
b64 (5) = "I4j+PYPjI4n+JIn+Jor+Jov+J4v+KIz+Ko3+K47+LI7+LI/+VobcLY/+VoffbYamZIe7L5D+ZIe+"
b64 (6) = "bYepL5H+bYerMJH+ZIi/ZIjCPZDsMZL+ZInFbYmtbYmvMpP+R4/oZYrIbYqyM5T+NJT+ZYvKbYu0"
b64 (7) = "ZYvMbYu3NJX+NZX+NpX+ZYzPbYy5Npb+Yo3YcY20N5f+OJf+OZf+OZj+Opj+Y4/hOpn+O5n+PJr+"
b64 (8) = "PZr+PZv+Ppv+Ppz+P5z+QJz+UJrsQJ3+QZ3+Qp7+Q5/+RJ/+TJ7yRKD+RaD+Tp/yRqH+SKL+SKP+"
b64 (9) = "SaP+SqT+cpvkS6T+WKLwS6X+Tab+Tqf+T6f+fJ7ZT6j+hJ7GUKj+Uaj+U6r+jaC4fKHlVKv+Vav+"
b64(10) = "Wqv4Vaz+Vqz+Yaz0Wa7+Wq/+W7D+XrL+X7L+X7P+YLP+Z7L3YbT+ZLb+Zbb+Zbf+Zrf+Zrj+Z7j+"
b64(11) = "abj8bLj6la/cabr/arr/nrDJnrDLa7v/nrHNnrHPlLLpbLz/b7z8bb3/cL7/cb//csD/nrbinrfj"
b64(12) = "c8H/nrfldMH/nrjnq7/gq8Ltvczkvc/wzNfo0NnlzNryztvx2eHt2eP04+nx4+r15+7z5+71dgi8"
b64(13) = "WgAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH"
b64(14) = "2QwdFjMJC3qHUgAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAFCSURBVDjL"
b64(15) = "Y2AYeiA6Er98k75eNT75lRqn9ysuwi1/UuHA2UNrhA7ikr8uuf3c4Z2bJ/Fdwy5/U3z9uWO7tmxY"
b64(16) = "nsZ9A5v8Ham554/t3rph+fzpbly3MOXvK/WcP7Vn28ZVC2b0txnz3kOXf6iTc+nU3m0bVy+cOaG9"
b64(17) = "NltL9AGq/GNbvytn9u3YtHbxzIkdddlRIdLqj1AUzOaxtjA1mrpu6azJnfXucjJiwqw1KAruXr18"
b64(18) = "8YKN47I5U7oa8tXMThw/euQ2pjsr7OZN6W4siFOpxBFQxVbTeptLE0OVS3AoKDTvaylLDguUL8Kh"
b64(19) = "INewtTw5LMhLNg+HggyDqvTwYG9XiSwcClJ10yOCfVydRDJxKEjRjgrx9XC2F0zCoSBeM8Tfw8XB"
b64(20) = "UiABh4JY1QBPoLwJfwwOBUs4ONnZWJiZGFcMubwGACnycFlGseiWAAAAAElFTkSuQmCC"
' Flèche bas (fleche_02.png).
b64 (0) = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAq9QTFRFOb1q"
b64 (1) = "BjiADTyBDT2EEkCDDUGJEUWSEEWVEEabEEiTEUijHEiIBknCA0nNCEvIEE6hCEzNFU2rCE7RD1Kq"
b64 (2) = "ClDWC1LcHFS2DFXhFlmzLFaQDVfmEFu8F1q0GVu1GVy4EGLLL12mJ1/COWCZEWnYPmWaJ2jOJ2rQ"
b64 (3) = "J2rWKGvUE3DjNGvMInTZFXbtJXbaL3TaMHXWF3rzKHjbHHzwMnjZK3rcMnnZGH75THa3LXzdIn7r"
b64 (4) = "NHvcM3zcGYH8J3/nLH/jT3m7Nn3gG4L+MH/eV3mnMX/eG4P+R3rXHIP+HIT+HYT+WXupUnu/M4Hg"
b64 (5) = "HoX+OYHiIIb+NoPgU37CIYf+KYfyIoj+PIPkI4j+OIXiJYn+O4bjJYr+V4HGJor+Jov+J4v+P4fn"
b64 (6) = "Ko3+WoTKQonqK47+LI7+LI/+XIbMLpD+L5H+MJH+RY3tMZL+X4nQR47uQpHqM5T+NJT+YYvTY4vV"
b64 (7) = "NJX+NZX+Npb+OJf+OZj+Opj+Opn+O5n+dZC1PJr+Ppv+Ppz+P5z+QJz+QJ3+QZ3+eZS6Qp7+Q5/+"
b64 (8) = "RKD+RaD+RqH+R6L+SKL+SaP+SqT+S6T+S6X+TKX+Tab+Tqf+T6f+T6j+UKj+Uaj+Uan+Uqn+U6r+"
b64 (9) = "VKv+Vav+Vaz+Vqz+gaPce6PufaPsV63+f6TqjKTHWK7+Wa7+gqXpWq/+hKbnW7D+kabGkqfEXbH+"
b64(10) = "hqjlXrL+kqjJX7L+iKnkYLP+iqrik6rLjavhYrX+Y7X+lazOZLb+Zbf+Zrf+j67oaLn/abr/arr/"
b64(11) = "arv/a7v/br3/n7TTb77/cL7/cL//cb//dcL/dsP/d8P/nrvyesX+rLzRfMf/fcf/p77ngMn+qcDp"
b64(12) = "q8Hrg8z/scLdq8Pshc3+vcrcwMzcwM7lzdns0Nrm2OLw3eTt3ebt3ebx3uf14Ojz5evx5+zy6O71"
b64(13) = "mlX31wAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJ"
b64(14) = "TUUH2QwdFjE6hpyExgAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAFISURB"
b64(15) = "VDjLY2AYUuCUlLioiJAAH89cHArm5V67cPr4wT2RhTgUzM+6fPb44T1bw3NwKFiYdO7Ekb3bVgek"
b64(16) = "4VCwNP7k0X071i72ScShYHnosf071i6Z4RKNQ8EavwM71y+ZMcEiEIeCDQ67Ni6bObHLxBuHgk1W"
b64(17) = "G5fNmtTdamiPQ8EW4xWzJ3e31uqaY8o9uHrp4vki/TlTetrqyrQVtm9et/I6ioLdvOoaaqp5U3vb"
b64(18) = "68vzg+VkZSQYvVAU3HfT27Z6wbS+joaKgvSECH9HacnHqHY80TJdPL2/o7GyOCMhyt9Vnvsuuise"
b64(19) = "KlpP6GyqKslMjglyV2a5jenOO2JOLTWlmcmxQR6aTDew+fKWoF1pdkpciKcO8xns4XCTyzYVKG/A"
b64(20) = "ugpXkrrCYRnma8ZZjTvRHWI3suF3xpcsF7EJq9zDm3CblR4xDEUAAMiPct9Li+kZAAAAAElFTkSu"
b64(21) = "QmCC"
' Ascendant (icon_01.png)
b64 (0) = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAB3RJTUUH2QwdEhoi5IlJJQAAAAlw"
b64 (1) = "SFlzAAAK8AAACvABQqw0mAAAAARnQU1BAACxjwv8YQUAAAAwUExURQAAAISEhMbGxv8AAP//////"
b64 (2) = "/////////////////////////////////////////5GHF9sAAAAEdFJOU////wBAKqn0AAAAbUlE"
b64 (3) = "QVR42p3M0Q2AMAgE0NMygCPUDZp0At1/KGlLLRSNiRxfLxwAQtYD2r/BlhjszTPoUgV98wajJDBu"
b64 (4) = "bgAmoM1Be6PgcFDfaKhvLPAbC9yagI9okXRAlPRxFTd0SmJbDyn2rCj7B3KQIIWyDi7xdjhjV/Ls"
b64 (5) = "egAAAABJRU5ErkJggg=="
' Descendant (icon_02.png)
b64 (0) = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAB3RJTUUH2QwdEhokDersEAAAAAlw"
b64 (1) = "SFlzAAAK8AAACvABQqw0mAAAAARnQU1BAACxjwv8YQUAAAAPUExURf8AAAAAAMbGxv///4SEhCgn"
b64 (2) = "U18AAAABdFJOUwBA5thmAAAAbklEQVR42p3M0RWAIAgFUNhAdIJGyFqA/ZdKkTyAHT/i8cOtJ4Ad"
b64 (3) = "JAIPlbfQCgEqb0EKDvq5AS0YGOeE9/uEwg6QItweiAIUdtAfsCD/W5DrC05Nq4zJmrVCYaAcVfbS"
b64 (4) = "rIBHJtk08geAMMnCyAIPTWczq1vT0RkAAAAASUVORK5CYII="
' En mitre (icon_03.png)
b64 (0) = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAB3RJTUUH2QwdEhoey+Y1ogAAAAlw"
b64 (1) = "SFlzAAAK8AAACvABQqw0mAAAAARnQU1BAACxjwv8YQUAAAAwUExURQAAAISEhMbGxv8AAP//////"
b64 (2) = "/////////////////////////////////////////5GHF9sAAAAEdFJOU////wBAKqn0AAAAdUlE"
b64 (3) = "QVR42p3Oiw2AIAwE0FM6gCOUDZowAe4/lAVqlEKIsZeQ8vgitQKCNQYU1wA4oPgF7J0HbM8Uyhsd"
b64 (4) = "tOkEAAd0VBB4yAvQv/WQFQAHOr5A13vQa8q4WSqUYkut4chQxCfd0ZZHEN7BYtH2DyRICKlFWwxw"
b64 (5) = "Ae5HORcfDp/BAAAAAElFTkSuQmCC"
' En « V » (icon_04.png)
b64 (0) = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAB3RJTUUH2QwdEhojk455swAAAAlw"
b64 (1) = "SFlzAAAK8AAACvABQqw0mAAAAARnQU1BAACxjwv8YQUAAAAwUExURQAAAISEhMbGxv8AAP//////"
b64 (2) = "/////////////////////////////////////////5GHF9sAAAAEdFJOU////wBAKqn0AAAAdklE"
b64 (3) = "QVR42p3O3Q2AIAwE4JMyACPgBk26gBD3n8ny8wCUxGjvnr4ABQDJOPDnJ2BggRx2MOxpMJx5A92x"
b64 (4) = "QA4dgAV82EJ5YQIfBih/myBZYMwApBlqGxyaDpcGiJo+TmOvmPFZE1tvjQWOJQ615OgPCGnAVCss"
b64 (5) = "Bh7R3TucjDgfwgAAAABJRU5ErkJggg=="
' Insérer des lignes (icon_05.png)
b64 (0) = "iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAAAAXNSR0IArs4c6QAAAGZQTFRFUikD"
b64 (1) = "AF+3GX0AGoYAJpIAMJsAMqUAeoWSW5hPSoz+XZxJhI+bjZilkp2qdbRfrbK0sba4jsl6ob/9u8DD"
b64 (2) = "wcbJvdlYwdtm0+mM4vOd6vSf6e7w6u/y7fL17vP28Pb49fr99vv++fv4LhlJxwAAAAF0Uk5TAEDm"
b64 (3) = "2GYAAAABYktHRACIBR1IAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH2QweBywZ1Mb/AQAA"
b64 (4) = "AH9JREFUGNOVz80SgjAMRtEIIVT5EawpCIXK+7+k0DgOkRV382XOLgAnuvwl+FB98aoSrN6qKmLp"
b64 (5) = "x12+jFj4YZcvBOdpraV2m2kWzJewRi/aJiy5YIwcySHYxDKXydH8vqoRHWKtX8W+465HjSZl5vSm"
b64 (6) = "8WkSToyFgx4MwN4tnO8DKQMMzQtuDNYAAAAASUVORK5CYII="
' Consulter la feuille (icon_06.png)
b64 (0) = "iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A"
b64 (1) = "/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAAd0SU1FB9kMHRQ3JV5K+tsAAAHaSURBVDjL"
b64 (2) = "rZM/aFNBHMc/v7tzEzT9M3RxK2igQnBVHKpFsAGJKKhYbV3EyUXc1CGIoUtdutk2lVTQKoXESSQO"
b64 (3) = "4tQuKliwCtmEuoiD5uV+7zm0Nnm+SI3NwYMHd/fh8737nkR0d5gu83C/f/aMVXYk+21+VGJAgKmJ"
b64 (4) = "k/8Fuz7zPGkIUFruYuTCsYAr55Sow+Ai8OBRAPN/AFWV7z/qNHzYEXCXM6hq0tCrx2tIw/sODR1e"
b64 (5) = "fbI26hUDGJHYt7A2ydlXKRbWJhNzRgSzuTdhqOoRazAth7j4cZpntbssZYucKl+CSBg7cDNuaA3a"
b64 (6) = "YtgSWbEiREYAmHlX4PHnPJXTc3z6ssxSdo7Rp5chFCaGmlArgm85w1hkZwzOWpy1lFbzlHOzrNSq"
b64 (7) = "aBSwUqtSzs1SWs1vrXHW4oxpH9mrx1qz0QPg/MAdhovjAEyPjHOjWgSKZAeu4axtGhqJXcoWMFTF"
b64 (8) = "WkE2nS8eusqJfTnOvDhIFHl8HZ4cf8veVArnpBlRhLBdbUJVDAZh41L6e/vo7+0jqEAYNQjqkN6f"
b64 (9) = "TtaGvwFD5da9qcSGoAFh5Al+wu3C/X9/epmhwbYL3n8Y5sLDRTK7D5NJD25f9O2e7svXb6Kv6+uk"
b64(10) = "enoYOXpEdgzsdPwCL7C145z67DkAAAAASUVORK5CYII="
' Trier la sélection (icon_07.png)
b64 (0) = "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAbCAYAAABr/T8RAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A"
b64 (1) = "AAAAMyd88wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAAd0SU1FB9kMHRYGHbORkZkAAAUxSURBVEjH"
b64 (2) = "1ZZdbBRVFMd/d2Z3drvT/bDQdttCa9UWrQjWxESljQgUEwVBJH6gIMSIMTHygA+KCQm+GJ80xK8Y"
b64 (3) = "An5EE4PRQDSACdoC0lAjLS20ttBKgW2xW7bbpXR3Zj+OD5WVKkiLD8SbTHIzM/f+cs6593/+Srg+"
b64 (4) = "Q7tOXBz/dYPI8AUREU719qJpCjPXi2l6cDoNdF3nBp9HXW6dmmyqw5GYJBIJjnd1cra/D9uyUJpi"
b64 (5) = "RkUFpmli2zbxeJyBcBjT66OqaiZmbi55flNdEzgciUlrSzP9odNMnToFr9ePYTgRAaUUfn+AvLwA"
b64 (6) = "g4MRdF0nN9cknU7T3d2NKEXVzFkUTPGrSYHDkZjs/OYr7qquRtedjIyMYNs2lmUhIrhcLoLBIB5P"
b64 (7) = "DhcujGIYBoZh4HK5EMkQj4/S9/sAVbffkU39hGrcdKiRmppaUskUlmWhaRpKKTRNw7ZtQqEQ3d0n"
b64 (8) = "0HUNp9NJZeUMCguDZDKZP6P3Yp38jVQqNblT3d8Xwuf1ZmEHD/7E5s3v0Nh4AJ/PZMmSRfh8uRw+"
b64 (9) = "/As7d+5g6dJHWLZsKU1NTSil0HUdy06i6/pfm8oEno7jPVJf3yC9vaelrm6hAOLz+WTFihWyadMm"
b64(10) = "Wb9+vVRWVo5bpmmaLF68WMLhQdm3b7/0nOqTS3+Y8OFq2H9QDF0xNBShvr6ehoYGWltbSSQSAMyb"
b64(11) = "N4/ly5dTUFCAz+fD6/VyY1kZHR0dFJaUUXXrLeqar9O33+0SnQzl5eWUlpVhWRaRSISBgQEcDgeF"
b64(12) = "hYV4vV5cLhdKKc6cOcPQcIyikukE1zzLtt1bzbWqeHTSAnL7zFm0HP6ZdDqDbVkYhkEwGMTv96MA"
b64(13) = "p2HgcDgwDAOlFKaZy+m+s+QaLs5Hf+cidNLg8rISFe88IWdO9mAYToLBIMlUCtu2UUohIkgmgwLS"
b64(14) = "GaG55Qj3zKkl9vwTlB1qVpeVTDVW8yuOp55+hocXPcLC/AKKioo5duQwpmnicrtRQCqZRDEmJvF4"
b64(15) = "nJbG3dw99zFCG15g1vbv1L82CRGhra0NgNhgLyNDIX7rauXQgb2UFOTx4fvv0vDjD9i2jW64CPX3"
b64(16) = "k0mn0XSdVCpFKpVidDRO/b79VN+/jPbX1zD7vc+1q3anZDKZnSfOnyVxfgCvO83NpXlseGUtAZ+H"
b64(17) = "9o52YrEYlTNuY/DcEIPnImhKkUwmiUajNOzfR+3c+RRODagHPvhaE3X5TDr+Dh4dHc2CLx2ls5bQ"
b64(18) = "fGAH1TVLmD37Tu659z6CxcVYVgK3283w8DCBQABNd5CTkzOWQXXl8o2LuKmpiXg8DkCoP0yoP5yF"
b64(19) = "Nu7ZQnXNGHzp4odoPdLCtGmlIOBwOvF4POgOB+l0emIn9aKSABKNRmXXrl1Zgfno7VcFkMY9WwSQ"
b64(20) = "Nze+KIA0H9ghgHy/t14GxtqkHG1rk+7ubtn2yadybviCXE0Ns5Mvvtw+7ttLL68TQL757K1x0JWr"
b64(21) = "VgsgH3849r6tvUvCQ+ez4C1bt00InK3xgroH+eXIUU4c7yKRsHC7XZSX38SjK9fx5sYXee2ND1i5"
b64(22) = "ajULFj7InJpaVq99DoBfO9rxB/wXrySZdGZy1ic/z6eIxCQ/P59MRtC0sa4SLCri6ScfZ9Wza5hf"
b64(23) = "t5CKigqKS6bR3NbO8a5OdMd4DUqmkpP3XPl5vn9c9PmDUWlua6f35EmCwSDTS0txu3PweDzkK4Vx"
b64(24) = "7BhGZyfDUwL09PTg8ZhkMlePesIOxLYtHA4nhmFkXcS56Ii0HzvKwNk+ek+dorTsRubU1OJ251zR"
b64(25) = "5F2z2fvf++rrBv4DiHtysN+EPqIAAAAASUVORK5CYII="
' Supprimer la sélection (icon_08.png)
b64 (0) = "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAAXNSR0IArs4c6QAAAtZQTFRFmAAA"
b64 (1) = "eQIAjQEAjQEFlgADmAAEfAgJhQYImQIAkAUAjwUHfQoLhggJkQcAfw0FrgACrAAIiQsDkgkBmwcA"
b64 (2) = "gQ8GgA8OuQAAtwAHnQkAkwwKnAoIpgcNsQYEngwBlA4LpwoVqAwHoBAAmBMOoBESqQ8QoRIToxQA"
b64 (3) = "ohQNpBUGmhcQmhcWmxgQrhQApRcApRcGrxYArxYEphkHnhsSnxwTnx0Zqh0Cqx8DmiIYoyAWtB0I"
b64 (4) = "rSAEtiABpSMXtB8euCEBmSkZoigXsiUIsSUQmioloyoRtikBvykIqS8Wpi8ypzAtwy0BqjEjrTIR"
b64 (5) = "1iQqzycn2CUl2CUr0Cko2Scm0iopuDQXyi0syDIFsjcVqzkgpzk7tjoYzDYJzjcAuj0T2DcA0ToC"
b64 (6) = "vUAWrERB3TwAwUMQ1j8H3jg4yUMVnEtOp0s3t0ZB20IAy0UX4kEEzkcQ3UUBq09A5kQAtUxI4EcD"
b64 (7) = "o1FU50YA4UgFzU0R00sU1EwV6kgAs1JVvFFH5UsK7EoBtFNW6E0A7ksDt1RStlRX70wEsldX8k8A"
b64 (8) = "81AA9lIAwFtO91MAul1Xu15Yul5eu19fuGRmumZoxmZVvmlrv2pswGtt4GRlvW9txHVzuXh3xXZ0"
b64 (9) = "wHl7p4F32HN0wnp8q4V7x3+Bs4Z+yICCr4h+xYSCqoyFtomBtY6Ey4mHvpCIzoyLy4+LvZWLrpqd"
b64(10) = "zJKUxZaOr5ye0piZ1JqbuKWn05+euaaovKiqvqil7ZuewKqn2KSkwauoyqyry62s76Sk3K+s37Gu"
b64(11) = "4LKv5rGw37ar5Lqv87a457ur5ryy6b2t5L+t67+v6sC268G36MOx58W48MOz7sS58MPG5cfG4MnG"
b64(12) = "zc/L4crHz9HO48zJ0NLP5s7L0tTR48/R09XS1NbT5tLU1tjV6NPW2NrW2tzZ293a3N7b3d/c3uDd"
b64(13) = "3+He4OLf4eTg4+Xh5efk5ujl5+nm6Orn6evo6uzp7e/r7vDt7/HurtYfJQAAAAF0Uk5TAEDm2GYA"
b64(14) = "AAABYktHRACIBR1IAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAB3RJTUUH2QweBzM3xUr8UAAAAaBJ"
b64(15) = "REFUKM9jYCAHbEsN8vf3BYJAMPCbchgivuf8vr0oYP+B2WCJ0E3r0cAOW7CE2IoVK1avW7kCDFau"
b64(16) = "W7dixQYVsIT4ggVb33/YvGgBECza+OH91gVr5MESMjOmXf/48d3WmdOmzdzy5v3H69OWqYIl+CdN"
b64(17) = "nHrv/dtXO6dO3f7i1Zs7UyfOUwZLCPT29PTdfP3q+e5dT54+v9zX0zNHCyyh0FRVVdd1+fmTxw8f"
b64(18) = "PrrY3djSN0kOLCHtEZlYWN1x4fH9+/cvT+jI9OSS5AJLqHMysWg4hSx+eP/2rfnW+mrCnHLMYAlV"
b64(19) = "Tk5hXctZj+7fv3Xt2lygDIeSIESCl0XNYOHzJw+PHbl06dYSS11hbR6whJEQh95SoKNO19cev3H/"
b64(20) = "6SpTWWN2sISJkPDy9+/fnK1pba898fTV+7VqFnxgCXMh4f0fP57LKmnrrM078/7jQTUbiIS9EIfh"
b64(21) = "oZPRcTmVtSVJ8acOWcm6iIAl8jWlDB3dwuKz8krzUmK8XM00vEXBEtMzHNzDY5OzyyoqynPTEqJ8"
b64(22) = "IpzTIVFYzMaIArjTyUohAP1bx/HSBLw/AAAAAElFTkSuQmCC"
Pour peu que l’éditeur en question permette la sélection verticale (cas de
Writer même si, en l’occurrence, je me suis servi de mon
SciTE chéri et adoré) et que l’on s’attache à positionner le code en respectant scrupuleusement l’alignement des chaînes, on peut alors remplir les indexs tabulaires de
b64() par paquets de dix en ayant
copié/collé les chiffres «
0123456789 » en vertical. Astuce de fainéant j’en conviens... Des 7989 octets de mes PNG d’origine, mon fichier texte culmine à 11924 ce qui ne me semble pas encore devoir fouetter un chat pour les dix icônes que cela transporte gaiement...
On est donc en possession de chaînes de caractères qui peuvent trouver place dans le code
Basic d’
OpenOffice.org. Mais ces chaînes, par définition, ne sont pas binaires ! Il faut donc procéder à une opération de décodage avant de les écrire sur le disque dur de l’utilisateur... Le Web regorge de code traitant la traduction en base 64. Mais je n’ai rien trouvé qui soit écrit dans le langage
Basic d’
OpenOffice.org [Cf.
infra édit du 03/01/10]. Alors j’ai traduit une fonction écrite à l’origine en
Visual Basic mais qui fonctionne très bien dans mon petit contexte
perso-à-moi-tout-seul... J’aurai évidemment préféré partir de scripts
JavaScript mais ceux-ci utilisent pour cette fonction des opérateurs binaires que ne possède pas notre bon vieux
Basic. Le code est plus verbeux puisque là ou il fallait vingt lignes à
JavaScript, il en faut un peu plus du double à
Basic d’
OpenOffice.org.
Une fois connu le
répertoire temporaire de l’utilisateur (merci
Dude), le script recherche si un dossier nommé «
smcjDialogPics » existe à l’intérieur et, si ce n’est pas le cas, le crée. Afin d’accélérer le traitement de l’ouverture du dialogue après une première fois un peu lente (c’est toujours lent la première fois...), les fichiers PNG ne sont écrits-là qu’une seule fois. À charge à l’utilisateur de faire le ménage dans son dossier temporaire quand bon lui semblera.
On aurait pu croire que l’instruction
Basic «
Open fichier
As Binary » fasse l’affaire pour écrire des valeurs de ce type comme c’était le cas du temps béni où votre serviteur se vautrait sans complexe dans le toutefois peu regretté
GWBasic (Ahr ! Cheunesse et Zoouvééniiir !). Mais comme le fait très bien remarquer
Bernard Marcelly autant dans
son ouvrage de référence que
sur le présent forum, il n’en est rien. Aussi l’écriture de fichiers binaires relève un peu de la croix et la bannière même si, ici comme en bien d’autres endroits, on sait gré à l’auteur de fournir des solutions
clé en main qui ont le mérite de fonctionner avec très peu d’adaptation.
Il est aussi notable que,
Basic ne possédant pas de type
Byte (mais seulement
Integer), les valeurs binaires décuplent la taille des fichiers écrits dans le répertoire temporaire. Ce n’est pas important pour des fichiers d’icônes qui, de toute façon, ne doivent pas envahir le code
Basic puisque leur traduction en base 64 les fait déjà enfler, mais c’est quand même impressionnant d’en prendre la mesure effective en les re-moulinant, par exemple, dans un logiciel comme
The Gimp pour en goûter la comparaison...
Voilà ; ce n’est pas sans plaisir que je coche [Resolu] envoyant [Issue] dans les choux gras du domaine du superflu...
Sans oublier de souhaiter une
Bonne Année à
tutti,
[Édit du 03/01/10]
Une bien meilleure fonction (beaucoup mieux écrite que ma traduction à partir de
V.B.) de décodage de la Base64 est disponible
ici ; j’ai évidemment mis ma pièce jointe à jour. On trouvera aussi sur la même page une fonction de codage qui peut évidemment s'avérer utile, infime travail de l'immense Danny Brewer.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.