- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 svg 文件:
<svg></svg>
呈现:
但是,通过使用 tcpdf ($pdf->imageSVG()) 我得到一个呈现的 pdf 文件:
最佳答案
非常不幸的是,该项目不再受到支持,尽管它是我见过的最好的作品之一。对于那些仍在使用它并遇到此问题的人来说,问题是根据SVG specs, the "Z" command :
..in a subpath causes an automatic straight line to be drawn from the current point to the initial point of the current subpath.
这应该将下一个命令的相对路径“重置”到子路径的开头。 TCPDF 没有实现这部分;它只是关闭路径,但从不将笔移动到子路径的开头,这是下一个命令的开始位置。
为了解决这个问题,我只是在 protected SVGPath 函数的开头创建了两个变量,并在“M”(moveto)开关中设置它们的值来存储每个路径的开头或子路径。
然后在“Z”开关中,我只是根据规范说明画了一条线回到该存储点。我已经在不同的 SVG 中对此进行了测试,效果非常好。这是代码..
对于“M”:
case 'M': { // moveto
foreach ($params as $ck => $cp) {
if (($ck % 2) == 0) {
$x = $cp + $xoffset;
} else {
$y = $cp + $yoffset;
if ($firstcmd OR (abs($x0 - $x) >= $minlen) OR (abs($y0 - $y) >= $minlen)) {
if ($ck == 1) {
$this->_outPoint($x, $y);
$firstcmd = false;
} else {
$this->_outLine($x, $y);
}
$x0 = $x;
$y0 = $y;
}
$xmin = min($xmin, $x);
$ymin = min($ymin, $y);
$xmax = max($xmax, $x);
$ymax = max($ymax, $y);
if ($relcoord) {
$xoffset = $x;
$yoffset = $y;
}
$start_x = $x;
$start_y = $y;
}
}
break;
对于“Z”:
case 'Z': {
$x = $start_x;
$y = $start_y;
$this->_outLine($x, $y);
$this->_out('h');
break;
变量是:$start_x 和 $start_x,您可以在函数开始时用 0 值初始化它们,以避免在路径不存在时出现错误从 moveto 开始。
关于tcpdf - tcpdf 的 imageSVG() 方法未正确渲染 svg 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51042409/
我有以下 svg 文件: http://jsfiddle.net/wptn28c5/ 呈现: 但是,通过使用 tcpdf ($pdf->imageSVG()) 我得到一个呈现的 pdf 文件: 最佳
我有一个 ImageSVG,我想将其设为 100% 的 PDF 区域。 SVG 的纵横比与 Letter 尺寸的页面完全相同。 我已经在 TCPDF 中创建了 Letter 大小的页面,但我无法将 S
我是一名优秀的程序员,十分优秀!