TCPDF-使用setRasterizeVectorImages(true)时呈现的SVG文件不良

TcpdF本身不提供对SVG文件的全面支持,但是建议使用Imagick作为解决方法。

根据他们的文档建议,您必须:

  • 在您的服务器上安装Imagick(库+ PHP扩展)
  • 设置$pdf->setRasterizeVectorImages(true);
  • 致电$pdf->ImageSVG();

我按照以下步骤操作,并收到一条错误消息:

TcpdF错误:[图像]无法获取图像:/ var / www /..../ img_Bwl4tC

调查后,我发现了三个问题:

  • 似乎在调用setRasterizeVectorImages(true)时,您不再可以在ImageSVG()中使用相对路径,而必须提供一个Web URL。我用一个简单的file_get_contents()替换了对cURL_ *函数的调用,并且可以正常工作。

  • TcpdF Image()函数中有一个错误,该错误无法正确检索SVG图像的宽度和高度。

  • 尽管文档在说什么,但如果您使用setRasterizeVectorImages(true),则必须在调用ImageSVG

    时手动设置SVG的宽度和高度。

我通过以下操作对其进行了修复:

$svgXML = simplexml_load_file($file);
list($originX,$originY,$relWidth,$relHeight) = explode(' ',$svgXML['viewBox']);
$imsize = isset($relWidth) ? [$relWidth,$relHeight] : false;

现在一切正常,但是图像仍然很糟糕。

没有setRasterizeVectorImages()时,SVG为不完整

TCPDF-使用setRasterizeVectorImages(true)时呈现的SVG文件不良

使用$pdf->setRasterizeVectorImages(true),SVG渲染糟糕

[

TCPDF-使用setRasterizeVectorImages(true)时呈现的SVG文件不良

使用Chrome浏览器(例如,我应该从TcpdF中获得的东西),一切看起来都很好

TCPDF-使用setRasterizeVectorImages(true)时呈现的SVG文件不良

有什么主意吗?我想避免使用mPDF重写整个脚本。

ysll2009 回答:TCPDF-使用setRasterizeVectorImages(true)时呈现的SVG文件不良

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2687539.html

大家都在问