SVG в Powerpoint через php или javascript
Итак, я разобрался, как создавать SVG-диаграммы с помощью d3, и у меня они аккуратно отображаются на веб-странице для всеобщего просмотра. Проблема в том, что мне нужно экспортировать эти SVG-графики в Powerpoint. Я начал использовать PHPPowerpoint и могу вытащить изображение из веб-каталога в слайд Powerpoint,
но что я не могу понять, так это как теперь взять диаграммы SVG со страницы HTML, на которой они сгенерированы, в powerpoint?
Я думал, что могу сохранить их в веб-каталоге, а затем использовать PHPPowerPoint.... но я не могу понять, как сделать первый шаг сохранения сгенерированной SVG-диаграммы в PNG или JPG в веб-каталоге?
Если бы я мог конвертировать в PNG или JPG, а затем отправить эти изображения с POST, я могу сохранить их на сервере, может быть?
Извините, наверное, простой вопрос для большинства. Вот некоторый код, который я пробовал, но круг все еще SVG, когда я заканчиваю.... не img...
<!DOCTYPE html>
<html>
<body>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="http://canvg.googlecode.com/svn/trunk/rgbcolor.js"></script>
<script type="text/javascript" src="http://canvg.googlecode.com/svn/trunk/StackBlur.js"></script>
<script type="text/javascript" src="http://canvg.googlecode.com/svn/trunk/canvg.js"></script>
<canvas id="test" width="600" height="400"></canvas>
<svg width="600" height="400"><style type="text/css"><![CDATA[text{font-family:sans-serif;font-size:11px;} path{fill: none;stroke: #000;shape-rendering: crispEdges;} line{fill: none;stroke: #000;shape-rendering: crispEdges;}]]></style>.....</svg>
<script type="text/javascript">
var ctx = document.getElementById('test').getContext('2d');
ctx.drawSvg('<svg width="600" height="400"><style type="text/css"><![CDATA[text{font-family:sans-serif;font-size:11px;} path{fill: none;stroke: #000;shape-rendering: crispEdges;} line{fill: none;stroke: #000;shape-rendering: crispEdges;}]]></style>......</svg>',
0 , 0 , 600, 400);
</script>
</body>
</html>
Поэтому я обнаружил, что не могу установить что-либо на хост-сервере, который использую canvg. У меня проблемы с тем, чтобы диаграммы выглядели на 100% одинаково... Я думаю, что это может быть рендеринг формы: crispEdges не входит в canvg.
1 ответ
Вот код (PHP) для преобразования файла SVG в JPG/PNG.
$svgFile = "sample.svg";
$im = new Imagick();
$im->readImageBlob($svgFile);
$im->setImageFormat("jpg");
$im->writeImage('jpg1.jpg');
$im->clear();
$im->destroy();
Для этого вам необходимо установить ImageMagic на свой сервер ( http://www.imagemagick.org/).
Вы также можете конвертировать SVG в JPG / PNG, используя команду.
convert sample.svg jpg1.jpg