Я знаю, что это довольно старый вопрос, но у меня была проблема несколько недель назад, и я решил ее для себя, надеюсь, этот ответ кому-нибудь поможет.Библиотека Cairo имеет PHP-привязки, но в ней также есть несколько ошибок, которые нарушают конвертацию между форматами - забудьте об этом.Нам нужно что-то родное здесь, на старте.Посмотрите на формат SVG - откройте векторное изображение в редакторе (я использую Inkscape) и сохраните его как файл SVG.После этого вы можете изменить его через php, как файл xml.Добавление пользовательских шрифтов в SVG:
$text_path = 'm 100,200'
$font_name = 'Some_font.ttf';
$font_size = '20px';
$font = base64_encode('font_file_content');
$text = 'Bla bla bla';
$font_svg = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<path d="' . $text_path . '" id="font_id_123"/>
<style type="text/css">
<![CDATA[
@font-face {
font-family: ' . $font_name . ';
src: url("data:font/ttf;charset=utf-8;base64,' . $font . '");
]]>
</style>
</defs>
<text style="font-family: ' . $font_name . '; font-size: ' . $font_size . ';">
<textPath xlink:href="#font_id_123">' . $text . '</textPath>
</text>
</svg>';
$content = file_get_contents($svg_file); // $svg_file - your vector image
$content = substr($content, 0, -6); // cut last '</svg>' tag from file
$newContent = $content . $font_svg . '</svg>'; // add font to the end
file_put_contents($svg_file, $newContent); // save changes
Хорошо, у нас есть SVG с необходимыми шрифтами, но нам нужен EPS.Для конвертации SVG в EPS я использовал Inkscape с простым bash-скриптом svg2eps.sh:
#!/bin/bash
inkscape -f $1 -z -T -E $2
. Вы можете позвонить с php:
exec('/path/to/svg2eps.sh /path/to/in.svg path/to/out.eps');
Другие советы:
1) Установите последнюю версию Inkscape.Я протестировал его на openSuse 12.3 - отлично работает.
2) Установите все пользовательские шрифты на системные шрифты.