微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TCPDF SVG 图像的奇怪行为

如何解决TCPDF SVG 图像的奇怪行为

当我尝试从 PHP 代码生成 PDF 时,我遇到了 TCPPDF 呈现的奇怪行为。

这是我的 SVG 文件

<?xml version="1.0" encoding="utf-8"?>
<svg x="0pt" y="0pt" width="1020pt" height="1020pt" viewBox="0 0 1020 1020" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <g id="1">
    <title>LAC ET FORET</title>
  </g>
  <g id="2">
    <title>VILLE</title>
    <g id="3">
      <title>Velo</title>
      <defs>
        <title>Path</title>
        <g id="4">
          <defs>
            <path id="5" d="M7.5,259.922 C213.226,259.922,380,427.885,635.077 C380,842.27,213.226,1010.23,7.5,1010.23 C-198.226,-365,635.077 C-365,-198.226,259.922 z"/>
          </defs>
          <use xlink:href="#5" style="fill:none;opacity:1;stroke:#ff0000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-width:20;"/>
        </g>
      </defs>
      <use xlink:href="#4"/>
      <defs>
        <title>Path copy</title>
        <g id="6">
          <defs>
            <path id="7" d="M1012.5,259.922 C1218.23,1385,427.825,634.944 C1385,842.063,1218.23,1009.97,1012.5,1009.97 C806.774,640,634.944 C640,806.774,259.922 z"/>
          </defs>
          <use xlink:href="#7" style="fill:none;opacity:1;stroke:#ff0000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-width:20;"/>
        </g>
      </defs>
      <use xlink:href="#6"/>
      <defs>
        <title>Path</title>
        <g id="8">
          <defs>
            <path id="9" d="M1010.1,635.507 C1010.1,635.507,760.013,134.872,134.872 C760.013,9.90756,134.892,134.892 C9.90756,10.0611,635.784,635.784 C10.0611,759.988,134.636,134.636 C759.988,760.03,10.1281,10.1281 C760.03,766.014,9.93965,885.136,9.93963 C965.555,9.93962,970.933,135.054,885.062,135.054"/>
          </defs>
          <use xlink:href="#9" style="fill:none;opacity:1;stroke:#ff0000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-width:20;"/>
        </g>
      </defs>
      <use xlink:href="#8"/>
      <defs>
        <title>Path</title>
        <g id="10">
          <defs>
            <path id="11" d="M1060.52,636.085 C1060.52,636.085,1009.94,636.085"/>
          </defs>
          <use xlink:href="#11" style="fill:none;opacity:1;stroke:#ff0000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-width:20;"/>
        </g>
      </defs>
      <use xlink:href="#10"/>
      <defs>
        <title>Path</title>
        <g id="12">
          <defs>
            <path id="13" d="M-30.5769,135.081 C-30.5769,135.081,10.1142,135.081"/>
          </defs>
          <use xlink:href="#13" style="fill:none;opacity:1;stroke:#ff0000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-width:20;"/>
        </g>
      </defs>
      <use xlink:href="#12"/>
    </g>
  </g>
</svg>

这是我生成 PDF 的 PHP 代码:它包含在并排放置图像的循环中。

$pdf->ImageSVG($file = '@' . $img,$line*($iconsize*$ratioOf),$column*($iconsize*$ratioOf),$iconsize,$link='',$align='',$palign='',$border=0,$fitonpage=false);   

我不知道为什么但渲染看起来像这样:我的意思是图像显示不正确。第一个没问题。然后第二个是尺寸缩小。

如果我使用相同的 SVG 文件,但仅使用 <PATH>(不再使用)包括样式。它工作正常。我的 SVG 中的某些内容会使 TCPDF 运行异常。我想不通。

myPDF with issue screenshot

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。