Ну, я столкнулся с проблемой при использовании imagick, я пропускал шрифты, которые использовались в SVG.Поискал в интернете, но не смог найти ответ, который можно использовать.
svg содержит что-то вроде этого:
<defs>
<style type="text/css">@import url("https://fonts.googleapis.com/css?family=Faustina");</style>
<style type="text/css">@import url("https://fonts.googleapis.com/css?family=Ubuntu");</style>
</defs>
<text x="61.81135214943191" y="111.73005750523703" font-size="55" fill="#9E3E3E" transform="rotate(15)" font-family="Faustina" style="font-family:'Faustina' !important">Test 1</text>
<text x="61.81135214943191" y="171.73005750523703" font-size="45" fill="#9E3E3E" transform="rotate(-15)" font-family="Ubuntu" style="font-family:'Ubuntu' !important">Test 2</text>
пользователь может добавить больше шрифтов и больше текста в качестве фонового изображения / изображений дляsvg, но проблема в том, как добавить шрифты в imagick при преобразовании svg в png?
я могу загрузить эти шрифты и заменить код для использования font-face вместо импорта, но метод IMagick :: setFont принимает только строку,
Подойдет любой другой метод преобразования php, так как shell_exec и подобные команды отключены.Если на нашем тестовом сервере я могу изменить это значение, но на производственном сервере, на котором будет выполняться этот код, я ничего не смогу изменить.
сейчас я использую простой код:
$image = new IMagick();
$image->setBackgroundColor(new ImagickPixel('transparent'));
$image->readImageBlob($svg_html);
$image->setImageFormat("png32");