Mettre à l'échelle le chemin SVG et convertir à l'aide de mPdf
P粉287726308
2023-08-16 17:57:54
<p>Bonjour, j'ai des problèmes avec SVG. </p>
<p>Tout d'abord, j'ai mis le SVG en HTML, avec le type d'entrée radio, l'utilisateur peut mettre à l'échelle ce SVG (en ajoutant un attribut de style de largeur avec une valeur en pourcentage). Mais quand je l'envoie en mpdf (SVG en JSON), ça ne marche pas. </p>
<p>Ensuite, j'essaie de calculer la taille sur le pdf, mais je n'arrive pas à adapter la zone d'affichage/taille de ce SVG. </p>
<p>Le SVG que j'obtiens est donc le suivant : </p>
<pre class="brush:html;toolbar:false;"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3. " ="largeur : 28 % ; hauteur : auto;">< chemin fill="#ffffff" id="chemin-svg-numéro" d="M277.95 252.69L277.95 785.89L171.02 785.89L171.02 347.17L62.62 271.73L277.95 252.69ZM748 .90 8h90 785.89L384.89 785.89L384.89 715.94L557.37 531.01Q594.73 488.16 610.47 458.68Q626.22 429.20 626.22 403.93L626 .22 403.93Q62 6,22 370,24 608,09 348,82Q589,97 327,39 556,64 327,39L556,64 327,39Q519 ,65 327,39 500,43 352.48Q481.20 377.56 481.20 419.31L481.20 419.31L377.20 419.31L376.46 417.11Q374.63 344.97 423.89 294.98 Q473.14 245.00 .64 245.00L556.64 245.00Q639.04 245.00 686.10 287.84Q733.15 330.69 733.15 402.10L733.15 402.10Q733.15 450,44 706,60 491.27Q680.05 532,10 618,90 598,39L618,90 598,39L524,05 702,03L524,78 703,86L748 ,90 gt;</chemin></svg>
≪/pré>
<p>Je souhaite le rendre en pdf mais avec des dimensions différentes. </p>
<pre class="brush:js;toolbar:false;">fonction getPrintSize(conteneur) {
laissez renderSize = getElementSize (conteneur);
let scale = getScale(); //Renvoie une valeur entière, telle que 33
retour {
width: (renderSize.width * 100) / scale, //Par exemple (159 * 100) / 24,127 = 659,013
hauteur : (renderSize.height * 100) / échelle //Par exemple (125 * 100) / 24,127 = 518,092
}
}
≪/pré>
<p>Alors le nouveau SVG devrait être de 659,013px x 518,092px, mais je ne peux pas définir les nouvelles dimensions correctes (mPdf ne prend pas en charge style="width: ...". En théorie, il prend en charge partiellement cette balise, mais en pratique ça ne supporte pas). </p>
<p>Dans mPdf, j'essaie de le rendre comme ceci : </p>
<pre class="brush:php;toolbar:false;">...
$template .= '<td align="center" style="largeur : 1890px; hauteur : 913px; alignement vertical : milieu">'.$data->number.'</td>';
...
≪/pré>
<p> Quelqu'un a-t-il une idée sur la manière de mettre à l'échelle ce SVG par chemin ? </p>
D'après mon expérience, les générateurs de PDF comme mPdf ou DOmPDF ont tendance à avoir des difficultés à gérer les valeurs relatives basées sur des pourcentages.
Tant que vos calculs de mise à l'échelle fonctionnent comme prévu, vous pouvez directement modifier les propriétés de largeur et de hauteur du svg :
Pour obtenir une valeur calculable, vous pouvez utiliser l'une des deux méthodes suivantes :
ou
La première méthode renvoie un nombre par défaut et convertit la valeur en pourcentage en valeur absolue (basée sur les unités utilisateur SVG).
Ce dernier supprimera toutes les unités et renverra une valeur purement numérique.