SVG-Pfad skalieren und mit mPDF konvertieren
P粉287726308
2023-08-16 17:57:54
<p>Hallo, ich habe Probleme mit SVG. </p>
<p>Zuerst füge ich die SVG-Datei in HTML ein. Mit dem Eingabetyp „Radio“ kann der Benutzer diese SVG-Datei skalieren (indem er ein Breitenstilattribut mit einem Prozentwert hinzufügt). Aber wenn ich es an mpdf (SVGs in JSON) sende, funktioniert es nicht. </p>
<p>Dann versuche ich, die Größe der PDF-Datei zu berechnen, aber ich kann die Ansichtsbox/Größe dieser SVG-Datei nicht anpassen. </p>
<p>Also das SVG, das ich bekomme, ist wie folgt: </p>
<pre class="brush:html;toolbar:false;"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3. org/1999/xlink" id="svg-number" width="686.280029296875px" height="540.8900146484375px" viewBox="62.619998931884766 245 686.280029296875 540.8900146484375 " Stil ="Breite: 28 %; Höhe: automatisch;">< path fill="#ffffff" id="path-svg-number" d="M277.95 252.69L277.95 785.89L171.02 785.89L171.02 347.17L62.62 271.73L277.95 252.69ZM748 .90.703.86L7 48,90 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.93Q6 26,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 6,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 703.86Z" ></path></svg>
</pre>
<p>Ich möchte es als PDF rendern, aber mit anderen Abmessungen. </p>
<pre class="brush:js;toolbar:false;">function getPrintSize(container) {
let renderSize = getElementSize(container);
let scale = getScale(); //Gibt einen ganzzahligen Wert zurück, z. B. 33
zurückkehren {
width: (renderSize.width * 100) / scale, //Zum Beispiel (159 * 100) / 24.127 = 659.013
height: (renderSize.height * 100) / scale //Zum Beispiel (125 * 100) / 24.127 = 518.092
}
}
</pre>
<p>Dann sollte das neue SVG 659,013 Pixel x 518,092 Pixel groß sein, aber ich kann die neuen korrekten Abmessungen nicht festlegen (mPdf unterstützt style="width: ..." nicht). Theoretisch wird dieses Tag teilweise unterstützt. aber in der Praxis wird es nicht unterstützt). </p>
<p>In mPDF versuche ich es so darzustellen: </p>
<pre class="brush:php;toolbar:false;">...
$template .= '<td align="center" style="width: 1890px; height: 913px; Vertical-align: middle">'.$data->number.'</td>';
...
</pre>
<p>Hat jemand eine Idee, wie man dieses SVG nach Pfad skalieren kann? </p>
根据我的经验,像mPdf或DOmPDF这样的pdf生成器往往难以处理相对的、基于百分比的值。
只要你的缩放计算按预期工作,你可以直接更改svg的宽度和高度属性:
为了获得可计算的值,你可以使用以下两种方法之一:
或者
第一种方法默认返回一个数字,并将百分比值转换为绝对值(基于svg用户单位)。
后者将剥离所有单位并返回纯数字值。