2013-08-01 17 views
6

У меня проблема с преобразованным PNG с использованием Apache Batik отличается, когда есть текст с разным семейством шрифтов, например Arial. Эта проблема возникает в среде, где Cent OS 6 работает Tomcat 7 и Java 6.Текст SVG для PNG не отображается правильно - шрифт Arial

код Java используется для преобразования SVG в PNG является:

// Convert the SVG image to png and send back 
PNGTranscoder transcoder = new PNGTranscoder(); 
// 
TranscoderInput input = new TranscoderInput(new ByteArrayInputStream(svgImage)); 
outStream = new ByteArrayOutputStream(); 
TranscoderOutput output = new TranscoderOutput(outStream); 

// Transcode the given SVG 
transcoder.transcode(input, output); 

outStream.flush(); 

pngImage = outStream.toByteArray(); 

файл SVG Я собираюсь преобразовать в PNG является :

<svg version="1.1" x="0" y="0" id="hjtqebzv1" width="610" height="240" xmlns="http://www.w3.org/2000/svg" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xlink="http://www.w3.org/1999/xlink"> 
    <defs> 
    <linearGradient id="LFFFFFF0" x1="0%" y1="0%" x2="100%" y2="0%"> 
     <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:0.8"/> 
     <stop offset="100%" style="stop-color:#FAFAFA;stop-opacity:1"/> 
    </linearGradient> 
    </defs> 
    <g id="hjtqebzv-o1" transform="translate(5,5)"> 
     <rect x="1" y="1" width="578" height="20" fill="url(#LFFFFFF0)" stroke="#5e5ca7" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/> 
     <text x="1" y="1" width="578" height="19" > 
     <tspan x="2" y="14" style="font-family:Arial;font-size:12px;fill:#000000;">This is a test text for testing text overlapping in the rectangle when convert the svg to PNG using SVG-Batik</tspan> 
     </text> 
    </g> 
</svg> 

Когда я открываю файл SVG в Firefox браузере отображается правильно, как указано на рисунке ниже: enter image description here

Но когда я конвертирую SVG с помощью Apache Batik, преобразованное изображение выглядит иначе. Apache Batik преобразованный PNG: enter image description here

В Windows 7 под управлением tomcat 7 и Java 7 сгенерированное изображение идентично исходному SVG.

В качестве сервера Cent OS он дает текстовое изображение, запутанное. Я чувствую, что шрифт Arial недоступен для приложения tomcat/java и его необходимо загрузить вручную. Если это так, я предпочитаю иметь совет загружать их обычным способом из основного местоположения ОС (местоположение шрифта OS) без каких-либо изменений в SVG-файле.

ответ

4

Необходимо установить шрифты TrueType Microsoft и сделать их доступными для виртуальной машины Java, установив переменную окружения JAVA_FONTS.

wget http://www.my-guides.net/en/images/stories/fedora12/msttcore-fonts-2.0-3.noarch.rpm 

rpm -ivh msttcore-fonts-2.0-3.noarch.rpm 

/etc/bashrc Открыть и добавить следующие строки в конец файла

JAVA_FONTS=/usr/share/fonts/msttcore 

export JAVA_FONTS 

http://www.itzgeek.com/how-tos/linux/centos-how-tos/how-to-install-microsoft-truetype-fonts-in-centos-6-rhel-6.html#axzz2aibHZaOI