我使用php在html中生成输出为svg,当我点击下载为svg时必须强制下载为svg图像。单击下载时如何将其生成为svg图像。
foreach($items as $item){
// echo $item->top;
$top = str_replace('px', '', $item['top']);
$left = str_replace('px', '', $item['left']);
echo '<div style="background-color:#fff;width:333.333px;height:500px;">';
echo '<div style="position:absolute;top:'.$top.';left:'.$left.'">';
$svg_element = $item['svg'];
echo $svg_element;
echo '</div>';
echo '</div>';
}
// output
<div style="background-color:#fff;width:333.333px;height:500px;"><div style="position:absolute;top:235;left:64.0667">
<svg width="198" height="132" viewBox="0 0 99 52" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="none">
<defs><style>@font-face{font-family: 'Twine';src: url("data:application/font-ttf;charset=utf-8;base64,")
<g id="0.38592716854139286"><text fill="#000000" stroke="none" stroke- width="0" stroke-linecap="round" stroke-linejoin="round" x="32" y="39" text-anchor="middle" font-size="40.30555555555556" font-family="Twine" data-textcurve="0" data-itemzoom="1 1" itemzoom="0.5 0.3939393939393939"> <tspan dy="0" x="50%">Hello</tspan></text></g>
答案 0 :(得分:0)
对于SVG,不应该有任何div。所以我删除了div并创建了宽度和高度,背景颜色的svg并将内容放在文件中保存为.svg扩展名
$op = '<svg width="'.$template_width.'" height="'.$template_height.'">';
foreach($items as $item){
// echo $item->top;
$top = str_replace('px', '', $item['top']);
$left = str_replace('px', '', $item['left']);
$op .= str_replace('<svg ', '<svg y="'.$top.'" x="'.$left.'" ', $item['svg']);
}
$op .= '</svg>';
$filename = '/front_'.time().'.svg';
file_put_contents(realpath(dirname(__FILE__)).$filename, $op);