首页 > 解决方案 > 如何从以“data:image/svg+xml;charset=utf-8”开头的 SVG 数据 URL 获取标准 SVG 文件?

问题描述

我正在使用 dom-to-image 库将我的表格转换为 SVG 文件,以便稍后使用 MPDF 库将该 SVG 文件添加到 pdf 文件中。

我从 domtoimage.toSvg() 获得以下 SVG 数据 URL:

data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="1295" height="828"><foreignObject x="0" y="0" width="100%" height="100%"><div id="table-container" xmlns="http://www.w3.org/1999/xhtml" style="place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; appearance: none; backdrop-filter: no .........

并使用 ajax 将此数据 URL 发送到服务器端,处理数据 URL 以下载 web 目录中的图像:

$data = $_POST['image'];


$svgData = str_replace('data:image/svg+xml;charset=utf-8,', '', $data);
$svgData = str_replace('%0A', '', $svgData);
file_put_contents("/web/myTable.svg", $svgData);

我得到了在所有浏览器中正确显示的 SVG 图像,但是当我在 Inkscape 或在线图像转换器网站中打开它以将其转换为 png 或 jpg 时,正在转换其中没有任何内容。

我的问题是,有没有办法从上述数据 URL 中获取 SVG 文件?

注意:当我将 svg 文件添加到adobe的在线 svg to png 转换器时,我收到此错误

这是我的 SVG 图像,它在所有浏览器中显示没有任何问题

提前致谢

标签: phpsvgdata-uri

解决方案


推荐阅读