我正在php服务器(https://tcpdf.org/examples/example_058/)上尝试TCPDF和示例058。 该示例本身效果很好。我下载了其他SVG文件,以尝试是否一切正确,但是其中一些无法正确呈现或完全损坏。
在示例058代码中,我更改了两件事: 1)svg文件路径 2)高度和宽度分别为100和100
这是我得到的破碎的SVG渲染之一,在Wikipedia上有Firefox徽标: On the left, the SVG rendered in Chrome, on the right, the pdf with Firefox logo inside
我正在使用PHP 7.1.x和TCPDF 6.2.25。是TCPDF中的错误还是SVG文件中的错误?
答案 0 :(得分:1)
我建议尝试切换到mPDF库。我本人在使用TCPDF库时遇到了很多问题,大多数问题都可以通过切换到mPDF库来解决。
我发现使用它的最佳方法是生成一个HTML文档,包括您的svg图像资源。它呈现了我在该项目中必须使用的所有奇怪的unicode字符,并且没有给我带来太多的布局或呈现问题。它也正在积极维护。自2011年以来,TCPDF尚未更新。
$mPdf = new Mpdf();
例如:
$html .= sprintf('<div id="svgPlot" style="position: fixed; top: %smm;">', $y);
$html .= '<svg> (blob of svg text) </svg>';
$html .= '</div>';
您还可以在html文档中使用它们,如下所示:
$this->html .= sprintf('<div id="logo" style="left: -9mm; top: %smm; height:45mm; position: fixed;">', strval((int)$y + 1));
$this->html .= sprintf('<img src="%s" alt="LOGO">', $logo); // $logo is resource location on your server for SVG logo file.
$this->html .= '</div>';
要完成写入,您可以使用:
$mPdf->WriteHTML($html);
然后:
$mPdf->Output($localFileName, 'D');