2015-09-06 107 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

任何ID eas如何控制這些字體?

我找到了一個鏈接,顯示的字體很大的控制,但我不能 準確地瞭解他們是如何做: http://www.rubblewebs.co.uk/imagemagick/server/fonts.php

+1

我讀ImageMagick的不完全能夠SVG轉換成別的東西。但是github上有一個工具。 https://github.com/shakiba/svgexport –

+0

謝謝@CharlotteDunois,但我需要它在PHP中funciton。我想從客戶端瀏覽器隱藏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