如何使用fabric js的toSVG数据在服务器端(PHP)创建SVG和PNG图像

DS9*_*DS9 7 javascript php svg imagemagick fabricjs

我使用fabric js创建了一个画布,用户可以在那里创建名片.现在我正在努力创建可缩放/可打印图像(SVG和PNG).

我正在尝试使用结构jS的toSVG数据在服务器端创建SVG和PNG图像的几种方法.因此,用户可以使用该SVG打印卡.

我尝试过以下选项(以下所有链接都是指我在SO中的问题,我要求找到合适的方法):
1)使用Canvas JSON在PHP端生成SVG
无成功
2)使用原始svg数据在服务器端生成png
部分成功:面临Word换行,字体问题等问题.也无法获得可打印的图像.(如果使用更高的DPI然后问题看起来像附加SS)检查下面的SS:

在此输入图像描述

3)使用SVG原始数据生成可打印PDF
部分:无法获取可打印的PDF

4)在imagick中使用svg的原始数据生成svg
无成功:无法创建svg图像(BG问题,图像问题).

5)使用原始数据直接创建SVG

$file_name = uniqid($prefix).".svg";
$file_handle = fopen("$folder_name/".$file_name, 'w');
fwrite($file_handle, $raw_svg);
fclose($file_handle);
Run Code Online (Sandbox Code Playgroud)

NO Success:字体未加载,不可缩放(表示可打印质量)

所以我的问题是创建SVG和PNG的最佳方法是渲染BG Image,Uploaded Images,diff.具有可打印质量的字体等.

注意:我更关注SVG,因为客户更喜欢,如果我可以在PNG中获得可打印的质量,它也可以工作.我也用imagick来实现SVG到PNG的对话.但是无法获得可打印的质量(在SS上面出现更高的DPI问题).

Fel*_*des 1

恕我直言,最可靠的渲染方式是 webkit,考虑wkhtmltopdf使用不同的字体从输入的 Web 内容生成可打印质量的 PDF 文件。

您可以通过将二进制文件复制并粘贴到服务器中来安装它。

它是预编译的,您可以下载流行发行版的二进制文件。

这可以安装在浏览器上,请参阅此示例:

您可以wkhtmltopdf使用 passthru 从 php 调用,如下所示:

echo("<pre>");
passthru("/full/path/to/your/wkhtmltopdf input_html_with_svg_inside.html output.pdf 1>&2");
echo("</pre>");
Run Code Online (Sandbox Code Playgroud)

稍后,您可以使用convert imagemagick 包将其转换为透明 png 等。

另外,在服务器上安装字体,您并不总是能获得所有正确的字体,但您可以在线找到可以免费安装的字体包。还有wkhtmltopng。

HTH。