2015-09-06 5 views
0

я получаю квадратики вместо текста я вхожу в SVG:ImageMagick преобразует SVG в PNG с неправильными шрифтами

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="200px" height="200px" version="1.1" 
viewBox="0 0 200 200" xmlns:xlink="http://www.w3.org/1999/xlink"> 

<text font-size="40px" x="0" y="50" font-family="Arial" > 
      123456789 ABCDEFGH 
</text> 

</svg> 

Тогда я convet его PNG на PHP с этим кодом:

<?php 
header('Content-Type: image/png'); 
$output = shell_exec("convert -size 280x280 test.svg png:- "); 
echo $output; 
?> 

и Я получаю эти квадратики вместо текста я вошел:

enter image description here

ИН как управлять этими шрифтами?

Я нашел ссылку, которая показывает большой контроль шрифтов, но я не мог понять, как именно они это сделали: http://www.rubblewebs.co.uk/imagemagick/server/fonts.php

+1

Я прочитал Imagemagick не в полной мере способен конвертировать SVG что-то другое. Но есть инструмент для github, который есть. https://github.com/shakiba/svgexport –

+0

Спасибо @CharlotteDunois, но мне нужно это для funciton в PHP. Я хочу, чтобы SVG был скрыт от клиентского браузера. Я бы использовал CANVAS для этого ... –

+0

Ну, вы уже используете 'shell_exec()' для выполнения командной строки, почему бы не сделать то же самое с svgexport? –

ответ

0

Во-первых, проверьте, какая версия ImageMagick вы работаете и обновить, если он старый - мир быстро движется с Интернетом!

identify -version 
Version: ImageMagick 6.9.1-10 Q16 x86_64 2015-09-04 http://www.imagemagick.org 

Во-вторых, рассмотреть вопрос об использовании rsvg делегата - вы можете перечислить делегатов, как это:

identify -list delegate | grep svg 
    cdr =>   "uniconvertor" "%i" "%o.svg"; mv "%o.svg" "%o" 
    cgm =>   "uniconvertor" "%i" "%o.svg"; mv "%o.svg" "%o" 
    dot =>   "dot" -Tsvg "%i" -o "%o" 
    dxf =>   "uniconvertor" "%i" "%o.svg"; mv "%o.svg" "%o" 
    fig =>   "uniconvertor" "%i" "%o.svg"; mv "%o.svg" "%o" 
    svg =>   "rsvg-convert" -o "%o" "%i" 

В-третьих, проверить, какие шрифты вы установили, как это:

identify -list font 

    Font: Arial 
    family: Arial 
    style: Undefined 
    stretch: Undefined 
    weight: 0 
    glyphs: /Library/Fonts/Microsoft/Arial.ttf 
    Font: ArialB 
    family: Arial 
    style: Undefined 
    stretch: Undefined 
    weight: 0 
    glyphs: /Library/Fonts/Microsoft/Arial Bold.ttf 

Наконец, если вы запустите свою команду в моей системе, вы получите это - я добавил черную рамку, чтобы вы могли видеть экстенты.

enter image description here